介绍
编程世界充满了创造力和智慧,但有时候也会出现一些令人啼笑皆非的代码。这个开源仓库就是为了收集这些史上最坑爹的代码片段而诞生的,它是一个让你咆哮大笑的地方,让你明白到编码下限到底有多低!
仓库信息
仓库地址为:https://gitee.com/gitee-community/bullshit-codes,这个是 Gitee 官方开源的项目,其 README.md 介绍如下:
时隔四年,bullshit-codes 仓库再次面向所有开发者征集你们遇到的坑爹代码!
这四年里,Gitee 见证了各种技术栈的更迭,陪伴了无数开发者的技术成长之路,也看到越来越多的优秀开源项目被人们所熟知。
当然,我们也相信,这四年里出现过多少优雅的代码,就出现过多少坑爹的代码。
我们坚信:The most bullshit codes are yet to come,把那些让你哭笑不得、怀疑人生、血压升高的代码展示出来吧,庆祝我们的错误,让我们一起从中学习,共同提升。
坑爹代码2.0
当然官方还发起了个“坑爹代码2.0有奖征集活动”,这确实有点意思... 那我在这里列一下这些获奖名单。
- 「还!有!谁!!!」奖
@Lv丶小胖:这绝对是世上最快的提醒商家发货功能,代表作如下:
这绝对是世上最快的提醒商家发货功能.
事情的起因:
同事做了一个商城, 马上就要上线了, 客户说还需要增加一个, 提醒商家发货的功能,然后就有了下面一段代码
然后过了几天,客户问: 为什么点击这个提醒商家的功能没什么用呢
我心里想: 这要是有用才是见了鬼了呢
// 页面按钮
// <button id="reminder">提醒商家</button>
// 获取按钮元素
var reminder = document.getElementById("reminder");
// 添加点击事件监听器
reminder.addEventListener("click", function() {
// 弹窗提示
alert("已提醒商家,尽快为您发货!");
});
- 「求求你转行吧」奖
获奖人员:@polarloves,代表作如下:
- 他尽力了,我无花可说(这是原pr标题)
//业务逻辑,给key值+1,redisUtils.incr(key)即可搞定,满满工作量,他尽力了
public Integer addAlarmPeriod(String alarmRuleId) {
String alarmPeriodKey = "ALARM_PERIOD_" + alarmRuleId ;
Integer alarmPeriodVal = 1;
if(redisUtils.hasKey(alarmPeriodKey)) {
String alarmPeriodValStr = String.valueOf(redisUtils.get(alarmPeriodKey));
if(!StringUtils.isEmpty(alarmPeriodValStr)) {
alarmPeriodVal = Integer.parseInt(alarmPeriodValStr) + 1;
redisUtils.set(alarmPeriodKey, alarmPeriodVal);
} else {
redisUtils.set(alarmPeriodKey,alarmPeriodVal);
}
} else {
redisUtils.set(alarmPeriodKey,alarmPeriodVal);
}
return alarmPeriodVal;
}
- if else 的正确用法
// 业务代码
Update update;
if (operationType.equals(AuditResultOperationType.getStart())) {
update = new Update().set("XXX", AuditResultOperationType.getStart());
} else if (operationType.equals(AuditResultOperationType.getStopBystart())) {
update = new Update().set("XXX", AuditResultOperationType.getStopBystart());
} else if (operationType.equals(AuditResultOperationType.getImExe())) {
update = new Update().set("XXX", AuditResultOperationType.getImExe());
} else if (operationType.equals(AuditResultOperationType.getStopByimExe())) {
update = new Update().set("XXX", AuditResultOperationType.getStopByimExe());
} else { //删除
update = new Update().set("XXX", AuditResultOperationType.getDel());
}
// 这是类....
public class AuditResultOperationType {
public static final String start = "启用";
public static final String stopBystart = "停用";
public static final String imExe = "立即执行";
public static final String stopByimExe = "停止";
public static final String del = "删除";
public static Integer getStart() {
return 0;
}
public static Integer getStopBystart() {
return 1;
}
public static Integer getImExe() {
return 2;
}
public static Integer getStopByimExe() {
return 3;
}
public static Integer getDel() {
return 4;
}
}
- 只要我不抛出异常,那我就不会有问题
/**
* 业务需求:调用第三方接口,把结果存入缓存。
*/
@Cacheable(key = "#userId")
@Override
public List<ResourceEntity> userResources(String userId) {
List<ResourceEntity> resourceEntities = new ArrayList<>();
// 调用第三方接口...
JSONObject parseObject = JSONObject.parseObject(data);
if(parseObject.getInteger("code") == 200){
List list = JSONObject.parseObject(JSONObject.toJSONString(parseObject.get("xxx")), List.class);
for (Object item: list) {
ResourceEntity resourceEntity = new ResourceEntity();
JSONObject.parseObject(JSONObject.toJSONString(ckeCluster));
item.setId(parseObject.getString("ckecluster_id"));
item.setName(parseObject.getString("cluster_name"));
resourceEntities.add(resourceEntity);
}
}
// 即使第三方接口出错了,我也不会抛出异常,数据虽然少了,但是我才不会有影响呢。
return resourceEntities;
}
- 图形大师
xbean.Equip equipttrOne = ((Equipitem) ei).getEquipAttr();
List<Integer> diamondsOne = equipAttrOne.getDiamonds();
for (int diamondId : diamondsone) {
if(36600 == diamondId
|| 36601 == diamondId
|| 36602 == diamondId
|| 36603 == diamondId
|| 36604 == diamondId
|| 36605 == diamondId
|| 36606 == diamondId
|| 36607 == diamondId
|| 36608 == diamondId
|| 36609 == diamondId
|| 36610 == diamondId
|| 36611 == diamondId
|| 36612 == diamondId
|| 36613 == diamondId
|| 36614 == diamondId
|| 36615 == diamondId
|| 36616 == diamondId
|| 36617 == diamondId
|| 36618 == diamondId
|| 36619 == diamondId
|| 36620 == diamondId
|| 36621 == diamondId
|| 36622 == diamondId
|| 36623 == diamondId){
MessageMgr.psendMsgotify(this.roleId ,196692,nul1);
return false;
}
}
- 域名判断代码(部分)
public class MR_DomainIpTest {
//读取逗号分隔符map
public static class dhMaper extends Mapper<Object, Text, Object, Text>{
private static final String sep = "|";
String domain_name = new String();
String ip = new String();
String datatime = new String();
String line=new String();
String[] fields;
String status=new String();
String res=new String();
String reslist=new String();
String domain_name1="xxx.com";
String domain_name2="xxx.com";
String domain_name3="xxx.com";
String domain_name4="xxx.com";
String domain_name5="xxx.com";
String domain_name6="xxx.com";
String domain_name7="xxx.com";
String domain_name8="xxx.com";
String domain_name9="xxx.com";
String domain_name10="xxx.com";
String domain_name11="xxx.com";
String domain_name12="xxx.com";
String domain_name13="xxx.com";
String domain_name14="xxx.com";
StringBuilder keySB = new StringBuilder();// Mapper输出Key Buffer
StringBuilder valueSB = new StringBuilder();// Mapper输出value Buffer
MR_demo02.KeyPair mapKey = new MR_demo02.KeyPair();// Map输出key值
Text mapValue = new Text();// Map输出value值
@Override
protected void map(Object key, Text value, Context context) throws IOException, InterruptedException {
line = value.toString();
fields = line.split("\\|", -1);// 分割数据
if(fields.length<11){
return;
}
domain_name=fields[2].trim();
ip=fields[5].trim();
datatime=fields[8].trim().substring(0,14);
status=fields[10].trim();
res=fields[7].trim();
reslist=res.split(";",-1).toString();
if(domain_name.length()<3 || "null".equals(domain_name) ||"".equals(res) || !"r".equals(status)|| reslist.length()<2){
return;
}
if(!domain_name.contains(domain_name1) && !domain_name.contains(domain_name2) && !domain_name.contains(domain_name3) &&
!domain_name.contains(domain_name4) && !domain_name.contains(domain_name5) && !domain_name.contains(domain_name6)
&& !domain_name.contains(domain_name7) && !domain_name.contains(domain_name8) && !domain_name.contains(domain_name9)
&& !domain_name.contains(domain_name10) && !domain_name.contains(domain_name11) && !domain_name.contains(domain_name12)
&& !domain_name.contains(domain_name13) && !domain_name.contains(domain_name14) ){
return;
}
keySB.setLength(0);
keySB.append(domain_name).toString();
//开始时间
valueSB.setLength(0);
valueSB.append(domain_name).append(sep);
valueSB.append(ip).append(sep);
valueSB.append(datatime);
mapValue.set(valueSB.toString());
context.write(keySB, mapValue);
}
}
//读取空格分隔符map
//reduce函数
public static class myReducer extends Reducer<Text,Text,Text,Text>{
private static final String sep = "|";
String domain_name = new String();
String ip = new String();
String datatime = new String();
String line=new String();
String[] fields;
public void reduce(Text key, Text values, Context context)
throws IOException, InterruptedException {
context.write(values,null);
}
}
}
- AI聊天机器人
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.err.println(scanner.nextLine().replace("吗", "").replace('?', '!'));
}
}
- 「公开处刑」名单
@yufire:我就修改一下我的Bean,很合理吧,为什么系统崩了?呜呜呜~
import cn.hutool.core.util.RandomUtil;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.SystemMetaObject;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* @author Yufire
* @date 2023/7/20 10:51
* 修改一下我那可爱的Bean
*/
@Component
public class SpringBeanUpdate implements ApplicationContextAware {
private static final String MY_BEAN_NAME = "MyBean.java";
/**
* 我真的只是想修改一下我自己的bean里边的属性
*
* @param applicationContext spring上下文对象
* @throws BeansException 抛异常?不可能的
*/
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
String[] beanNameList = applicationContext.getBeanDefinitionNames();
for (String beanName : beanNameList) {
// 判断一下bean名称是不是我的那个bean,很合理吧~
if (!beanName.equals(MY_BEAN_NAME)) {
// 获取一下我的bean
Object beanInstance = applicationContext.getBean(beanName);
// 获取一下反射操作对象,我就喜欢用反射,强转什么的不存在
MetaObject beanMetaObject = SystemMetaObject.forObject(beanInstance);
// 循环所有的setter方法
for (String setterName : beanMetaObject.getSetterNames()) {
// 给我的bean覆一下值,随机值,我喜欢
beanMetaObject.setValue(setterName, getRandomValue(beanMetaObject.getSetterType(setterName)));
}
// 打日志?不可能的
// log.out不了("哈哈哈")
}
}
}
/**
* 获取一个随机值
*
* @param type 类型
* @return 随机值
*/
public Object getRandomValue(Class<?> type) {
if (type.equals(String.class)) {
return RandomUtil.randomString(15);
} else if (type.equals(Integer.class)) {
return RandomUtil.randomInt(100);
} else if (type.equals(Long.class)) {
return RandomUtil.randomLong(100);
} else if (type.equals(Double.class)) {
return RandomUtil.randomDouble(100);
} else if (type.equals(Float.class)) {
return RandomUtil.randomDouble(100);
} else {
return null;
}
}
}
@绫织梦:高中时期,看同学写的奇葩代码里起的逆天缩写类名
/*
我高中时期,帮同学改他的日记本程序要去参赛,里边有一个功能是调用一个网络API来分析每天的文本所表达的心情
但是他类名Analyze非要写成缩写……就像下面的代码那样,就导致我调用这几个方法的时候十分想笑!!!!
T_T 本来只是缩写也没啥,但是配上那几个方法……
之前写过一篇回答说过这个事情:
说一下程序员接手别人烂代码能有多烂,是怎样的体验? - 绫织梦CoronaZero的回答 - 知乎
https://www.zhihu.com/question/546635927/answer/2606756988
*/
public class Anal {
public static bool insert() {
// DO Something...
}
public static bool check() {
// DO Something...
}
public static bool delete() {
// DO Something...
}
public static bool update() {
// DO Something...
}
public static bool save() {
// DO Something...
}
}
英语很差的我去翻译了下:
额...
@杰里:一个sql查只一个字段。满满的工作量
@Service
public class SupervisionEnforceStrengthServiceImpl implements SupervisionEnforceStrengthService {
@Override
public ZFJDGZVO zfjdgz(supervisionEnforceStrengthDTO1 dto) {
ZFJDGZVO zfjdgzvo = new ZFJDGZVO();
Integer allNum = zfjdgzMapper.selectAllNum(dto);
Integer dailyNum = zfjdgzMapper.selectDailyNum(dto);
Integer specialNum = zfjdgzMapper.selectSpecialNum(dto);
Integer finishNum = zfjdgzMapper.selectIsFinishNum(dto);
Integer cloudNum = zfjdgzMapper.selectCloudNum(dto);
zfjdgzvo.setAllNum(allNum);
zfjdgzvo.setDailyNum(dailyNum);
zfjdgzvo.setSpecialNum(specialNum);
//重点问题检出率-日常检查
Integer q11 = zfjdgzMapper.q11(dto);
Integer q12 = zfjdgzMapper.q12(dto);
Integer q13 = zfjdgzMapper.q13(dto);
//重点问题检出率-随机监听检查
Integer q31 = zfjdgzMapper.q31(dto);
Integer q32 = zfjdgzMapper.q32(dto);
Integer q33 = zfjdgzMapper.q33(dto);
//重点问题检出率-异地监督检查
Integer q41 = zfjdgzMapper.q41(dto);
Integer q42 = zfjdgzMapper.q42(dto);
Integer q43 = zfjdgzMapper.q43(dto);
//省略业务代码 (给zfjdgzvo赋值)
return zfjdgzvo;
}
}
//上面的q11 ,q12方法的sql是这样的。其他的方法类似
<select id="q11" resultType="java.lang.Integer">
SELECT IFNULL(SUM(DAILY_ALL_NUM),0)
FROM "SALN_MID_DATA"."TS_ZFJDGZ"
<where>
<if test="dto.city != null and dto.city != ''">
AND CITY_CODE = #{dto.city}
</if>
<if test="dto.district != null and dto.district != ''">
AND DISTRICT_CODE = #{dto.district}
</if>
</where>
</select>
<select id="q12" resultType="java.lang.Integer">
SELECT IFNULL(SUM(DAILY_KEY_QUESTION_NUM),0)
FROM "SALN_MID_DATA"."TS_ZFJDGZ"
<where>
<if test="dto.city != null and dto.city != ''">
AND CITY_CODE = #{dto.city}
</if>
<if test="dto.district != null and dto.district != ''">
AND DISTRICT_CODE = #{dto.district}
</if>
</where>
</select>
@呀吖呀吖呀:将dto中的type转换为时间的骚操作
import org.apache.commons.lang3.StringUtils;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class TimeConversion {
private void convertTypeToTime(UserCourseUsageDetailParamDto userCourseUsageDetailParamDto, int type, String startTime, String endTime) {
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
if(type ==6){
DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
if(!StringUtils.isEmpty(startTime)){
cal.setTime(dateFormat1.parse(startTime));
userCourseUsageDetailParamDto.setStartDate(dateFormat.format(cal.getTime()));
}
if(!StringUtils.isEmpty(endTime)){
userCourseUsageDetailParamDto.setEndDate(dateFormat.format(dateFormat1.parse(endTime)));
}
}else {
Map<String,String> dateMap = getDateByType(type);
userCourseUsageDetailParamDto.setStartDate(dateMap.get("startDate"));
userCourseUsageDetailParamDto.setEndDate(dateMap.get("endDate"));
}
} catch (ParseException e) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date startDate = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDate);
String startStr = null , endStr = null;
endStr=dateFormat.format(startDate);
calendar.add(Calendar.YEAR, 0);
calendar.set(Calendar.DAY_OF_YEAR, 1);
startStr = dateFormat.format(calendar.getTime());
userCourseUsageDetailParamDto.setStartDate(startStr);
userCourseUsageDetailParamDto.setEndDate(endStr);
}
}
private Map<String, String> getDateByType(int type){
Map<String,String> seDate = new HashMap<>();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date startDate = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDate);
String startStr = null , endStr = null;
if(type==0){
endStr=dateFormat.format(startDate);
calendar.add(Calendar.DATE,-1);
startStr = dateFormat.format(calendar.getTime());
}else if(type==1){
endStr=dateFormat.format(startDate);
calendar.add(Calendar.DATE,-7);
startStr = dateFormat.format(calendar.getTime());
}else if(type==2){
endStr=dateFormat.format(startDate);
calendar.add(Calendar.DATE,-30);
startStr = dateFormat.format(calendar.getTime());
}else if(type==3){
endStr=dateFormat.format(startDate);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);
startStr = dateFormat.format(calendar.getTime());
}else if(type==4){
DateFormat dateFormat1 = new SimpleDateFormat("MM-dd");
DateFormat dateFormat2 = new SimpleDateFormat("yyyy");
endStr=dateFormat.format(startDate);
String newStr = dateFormat1.format(startDate);
if(Integer.valueOf(newStr)>=201 && Integer.valueOf(newStr) <= 813){
startStr = dateFormat2.format(startDate)+"0201";
}else {
if(Integer.valueOf(newStr)>=101){
startStr = (Integer.valueOf(dateFormat2.format(startDate))-1)+"0814";
}else {
startStr = dateFormat2.format(startDate)+"0814";
}
}
}else if(type==5){
endStr=dateFormat.format(startDate);
calendar.add(Calendar.YEAR, 0);
calendar.set(Calendar.DAY_OF_YEAR, 1);
startStr = dateFormat.format(calendar.getTime());
}
seDate.put("startDate",startStr);
seDate.put("endDate",endStr);
return seDate;
}
}
@lzy6666666:公司高级JAVA工程师的业务代码,高!实在是高!
太多了,贴部分吧,感兴趣的点 ->「链接」,看得我强迫症又又又犯了
List<JSONObject> info = Collections.synchronizedList(new ArrayList<>());
shopIds.stream().forEach(shopId -> {
JSONObject json = new JSONObject();
StringBuilder sb = new StringBuilder();
bbs.stream().filter(bs -> Objects.equals(shopId, bs.getShopId()) && "本地仓库".equals(bs.getStorageSxNm()))
.forEach(bs -> {
sb.append("'" + bs.getParentId() + "-" + bs.getIdKey() + "',");
});
String cw = sb.length() > 0 ? sb.substring(0, sb.length() - 1) : null;
if (StringUtils.isNotBlank(cw)) {
json.put("FilterStringSql", "FStockId.FNumber in (" + cw + ")");
json = JSONObject.parseObject(remotePurchaseService.queryStkInventory(json.toJSONString()));
Boolean flag = json.getBoolean("flag");
if (flag != null && flag) {
JSONArray infoArray = json.getJSONArray("info");
info.addAll(infoArray.toJavaList(JSONObject.class));
}
}
});
Map<String, Map<String, Long>> stockMap = new ConcurrentHashMap<>();
info.stream().forEach(cw -> {
String warehouseId = String.valueOf(cw.getString("warehouse_id"));
Map<String, Long> goodsSkuIdStockMap = LinkUtils.getNewMap(stockMap.get(warehouseId));
String goodsSkuIdStr = cw.getString("goods_sku_id");
Long stock = LinkUtils.getZeroLongNotNull(goodsSkuIdStockMap.get(goodsSkuIdStr));
stock += cw.getLong("s_amounts");
goodsSkuIdStockMap.put(goodsSkuIdStr, stock);
stockMap.put(warehouseId, goodsSkuIdStockMap);
});
Map<String, Map<String, SalesBySellerSkuVO>> salesBySellerSkuMap = listSalesBySellerSku();
Map<String, Map<String, SalesByOperationCodeVO>> SalesByOperationCodeSellerSkuYesterdayMap = listSalesByOperationCodeSellerSkuYesterday();
Map<String, LongAdder> codeYesterdaySumMap = new ConcurrentHashMap<>();
SalesByOperationCodeSellerSkuYesterdayMap.forEach((key, codeMap) -> {
if (StringUtils.isNotNull(codeMap)) {
String keyof = String.valueOf(key);
LongAdder sum = new LongAdder();
codeMap.values().stream().forEach(vo -> {
if (Objects.equals(keyof, vo.getOperationCode())) {
sum.add(vo.getSum());
}
});
codeYesterdaySumMap.put(keyof, sum);
}
});
Map<String, Map<String, SalesByOperationCodeVO>> salesByOperationCodeMap = listSalesByOperationCode();
Map<String, LongAdder> codeSumMap = new ConcurrentHashMap<>();
salesByOperationCodeMap.forEach((key, codeMap) -> {
if (StringUtils.isNotNull(codeMap)) {
String keyof = String.valueOf(key);
LongAdder sum = new LongAdder();
codeMap.values().stream().forEach(vo -> {
if (Objects.equals(keyof, vo.getOperationCode())) {
sum.add(vo.getSum());
}
});
codeSumMap.put(keyof, sum);
}
});
@伊成:为了应付公司每月统计代码行数,同事的写法也是醉了...
package com.data.core;
import com.data.core.mysql.SaveDataDao;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Component
public class DuplicatedCode {
@Resource
private SaveDataDao saveDataDao;
/**
* 保存各个景区均值数据
*
* 为了应付公司每月统计代码行数,同事的写法也是醉了...
*/
public void scenicPassengerFlowVolumnData(){
Calendar c = Calendar.getInstance();
String marineaquariumNo="0";
String internationalTouristResortNo="0";
String wildlifeparkNo="0";
String orientalpearltowerNo="0";
String haichangoceanparkNo="0";
String shanghaiScienceTechnologyMuseumNo="0";
String centuryparkNo="0";
String jinmaoNo="0";
String huanqiuNo="0";
String baolanzhongxinNo="0";
String xianhuagangNo="0";
String xinchangguzhenNo = "0";
String shanghaizhidianNo = "0";
String hanghaiNo = "0";
String xunyicaoNo = "0";
String zhoupuhuahaiNo = "0";
String binhaislgyNo = "0";
String zhongyiyaobwgNo = "0";
/**
* 省略业务代码
*/
// 海洋水族馆
Map<String, Object> marineaquarium = new HashMap<>();
marineaquarium.put("insertdate", c.getTime());
marineaquarium.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
marineaquarium.put("total",marineaquariumNo);
marineaquarium.put("id", UUID.randomUUID().toString());
marineaquarium.put("businesstype", "均值");
saveDataDao.insertData("t_marineaquarium", marineaquarium);
// 国际旅游度假区
Map<String, Object> internationalTouristResort = new HashMap<>();
internationalTouristResort.put("insertdate", c.getTime());
internationalTouristResort.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
internationalTouristResort.put("total",internationalTouristResortNo);
internationalTouristResort.put("id", UUID.randomUUID().toString());
internationalTouristResort.put("businesstype", "均值");
saveDataDao.insertData("t_internationaltouristresort", internationalTouristResort);
// 野生动物园
Map<String, Object> wildlifepark = new HashMap<>();
wildlifepark.put("insertdate", c.getTime());
wildlifepark.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
wildlifepark.put("total",wildlifeparkNo);
wildlifepark.put("id", UUID.randomUUID().toString());
wildlifepark.put("businesstype", "均值");
saveDataDao.insertData("t_wildlifepark", wildlifepark);
// 东方明珠塔
Map<String, Object> orientalpearltower = new HashMap<>();
orientalpearltower.put("insertdate", c.getTime());
orientalpearltower.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
orientalpearltower.put("total",orientalpearltowerNo);
orientalpearltower.put("id", UUID.randomUUID().toString());
orientalpearltower.put("businesstype", "均值");
saveDataDao.insertData("t_orientalpearltower", orientalpearltower);
// 海昌海洋公园
Map<String, Object> haichangoceanpark = new HashMap<>();
haichangoceanpark.put("insertdate", c.getTime());
haichangoceanpark.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
haichangoceanpark.put("total",haichangoceanparkNo);
haichangoceanpark.put("id", UUID.randomUUID().toString());
haichangoceanpark.put("businesstype", "均值");
saveDataDao.insertData("t_haichangoceanpark", haichangoceanpark);
// 上海科技馆
Map<String, Object> ShanghaiScienceTechnologyMuseum = new HashMap<>();
ShanghaiScienceTechnologyMuseum.put("insertdate", c.getTime());
ShanghaiScienceTechnologyMuseum.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
ShanghaiScienceTechnologyMuseum.put("total",shanghaiScienceTechnologyMuseumNo);
ShanghaiScienceTechnologyMuseum.put("id", UUID.randomUUID().toString());
ShanghaiScienceTechnologyMuseum.put("businesstype", "均值");
saveDataDao.insertData("t_shanghaiscienceTechnologymuseum", ShanghaiScienceTechnologyMuseum);
// 世纪公园
Map<String, Object> centurypark = new HashMap<>();
centurypark.put("insertdate", c.getTime());
centurypark.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
centurypark.put("total",centuryparkNo);
centurypark.put("id", UUID.randomUUID().toString());
centurypark.put("businesstype", "均值");
saveDataDao.insertData("t_centurypark", centurypark);
// 金茂
Map<String, Object> jinmaoMap = new HashMap<>();
jinmaoMap.put("insertdate", c.getTime());
jinmaoMap.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
jinmaoMap.put("total",jinmaoNo);
jinmaoMap.put("id", UUID.randomUUID().toString());
jinmaoMap.put("businesstype", "均值");
saveDataDao.insertData("t_jinmao", jinmaoMap);
// 环球
Map<String, Object> huanqiuMap = new HashMap<>();
huanqiuMap.put("insertdate", c.getTime());
huanqiuMap.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
huanqiuMap.put("total",huanqiuNo);
huanqiuMap.put("id", UUID.randomUUID().toString());
huanqiuMap.put("businesstype", "均值");
saveDataDao.insertData("t_huanqiu", huanqiuMap);
// 上海国际博览中心
Map<String, Object> baolanzhongxinMap = new HashMap<>();
baolanzhongxinMap.put("insertdate", c.getTime());
baolanzhongxinMap.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
baolanzhongxinMap.put("total",baolanzhongxinNo);
baolanzhongxinMap.put("id", UUID.randomUUID().toString());
baolanzhongxinMap.put("businesstype", "均值");
saveDataDao.insertData("t_bolanzhongxin", baolanzhongxinMap);
// 上海鲜花港
Map<String, Object> xianhuagangMap = new HashMap<>();
xianhuagangMap.put("insertdate", c.getTime());
xianhuagangMap.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
xianhuagangMap.put("total",xianhuagangNo);
xianhuagangMap.put("id", UUID.randomUUID().toString());
xianhuagangMap.put("businesstype", "均值");
saveDataDao.insertData("t_xianhuagang", xianhuagangMap);
// 新场古镇
Map<String, Object> xinchangguzhenMap = new HashMap<>();
xinchangguzhenMap.put("insertdate", c.getTime());
xinchangguzhenMap.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
xinchangguzhenMap.put("total",xinchangguzhenNo);
xinchangguzhenMap.put("id", UUID.randomUUID().toString());
xinchangguzhenMap.put("businesstype", "均值");
saveDataDao.insertData("t_xinchangguzhen", xinchangguzhenMap);
// 上海之巅观光厅
Map<String, Object> shanghaizhidianMap = new HashMap<>();
shanghaizhidianMap.put("insertdate", c.getTime());
shanghaizhidianMap.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
shanghaizhidianMap.put("total",shanghaizhidianNo);
shanghaizhidianMap.put("id", UUID.randomUUID().toString());
shanghaizhidianMap.put("businesstype", "均值");
saveDataDao.insertData("t_shanghaizhidian", shanghaizhidianMap);
// 航海博物馆
Map<String, Object> hanghaiMap = new HashMap<>();
hanghaiMap.put("insertdate", c.getTime());
hanghaiMap.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
hanghaiMap.put("total",hanghaiNo);
hanghaiMap.put("id", UUID.randomUUID().toString());
hanghaiMap.put("businesstype", "均值");
saveDataDao.insertData("t_hanghaibowuguan", hanghaiMap);
// 薰衣草公园
Map<String, Object> xunyicaoMap = new HashMap<>();
xunyicaoMap.put("insertdate", c.getTime());
xunyicaoMap.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
xunyicaoMap.put("total",xunyicaoNo);
xunyicaoMap.put("id", UUID.randomUUID().toString());
xunyicaoMap.put("businesstype", "均值");
saveDataDao.insertData("t_xunyicaogongyuan", xunyicaoMap);
// 周浦花海
Map<String, Object> zhoupuhuaMap = new HashMap<>();
zhoupuhuaMap.put("insertdate", c.getTime());
zhoupuhuaMap.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
zhoupuhuaMap.put("total",zhoupuhuahaiNo);
zhoupuhuaMap.put("id", UUID.randomUUID().toString());
zhoupuhuaMap.put("businesstype", "均值");
saveDataDao.insertData("t_zhoupuhuahai", zhoupuhuaMap);
// 滨海森林公园
Map<String, Object> binhaislMap = new HashMap<>();
binhaislMap.put("insertdate", c.getTime());
binhaislMap.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
binhaislMap.put("total",binhaislgyNo);
binhaislMap.put("id", UUID.randomUUID().toString());
binhaislMap.put("businesstype", "均值");
saveDataDao.insertData("t_binhaisenlingongyuan", binhaislMap);
// 上海中医药博物馆
Map<String, Object> zhongyiyaobwgMap = new HashMap<>();
zhongyiyaobwgMap.put("insertdate", c.getTime());
zhongyiyaobwgMap.put("xval",(c.get(Calendar.HOUR_OF_DAY)+1) + "时");
zhongyiyaobwgMap.put("total",zhongyiyaobwgNo);
zhongyiyaobwgMap.put("id", UUID.randomUUID().toString());
zhongyiyaobwgMap.put("businesstype", "均值");
saveDataDao.insertData("t_zhongyiyaobowuguan", zhongyiyaobwgMap);
}
}
@hishuwei:winform程序路径写log文件
using System;
namespace Grab
{
public class LogUtils
{
/// <summary>
/// 本地log
/// </summary>
/// <param name="log"></param>
/// <param name="type"></param>
public static void WriteLog(String log, String type = "info")
{
try
{
string path = AppDomain.CurrentDomain.BaseDirectory + "/log/";
DirectoryInfo info = new DirectoryInfo(path);
if (!info.Exists) {
info.Create();
}
StreamWriter sw;
FileInfo fi = new FileInfo(path + type + "_" + DateTime.Now.ToString("yyyyMMdd") + ".log");
if (!fi.Exists) {
sw = fi.CreateText();
} else {
sw = File.AppendText(fi.FullName);
}
sw.WriteLine("================" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "================");
sw.WriteLine(log);
sw.Close();
sw.Dispose();
}
catch (Exception e)
{
}
}
}
}
@sahooz:论单机无联网App如何无痛升级数据库:升级数据库就删除所有表然后重建
用户保存的数据不值一提哈哈哈
public class MultiTableHelper extends SQLiteOpenHelper {
// ......
// 无关代码省略
@Override
public void onCreate(SQLiteDatabase db) {
if (db != null) {
if (tableNames != null && sqls != null) {
for (int i = 0; i < tableNames.length; i++) {
db.execSQL("create table if not exists " + tableNames[i] + sqls[i]);
}
}
}
}
// 数据库一旦升级就把所有数据表删除重新创建
// 以下注释是原开发者的注释,他很清楚自己在干嘛...
// 版本更新
// 用于升级数据库,当Version 变动了,就会调用onUpgrade方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (db != null) {
if (tableNames != null) {
// 如果表存在就删除
for (int i = 0; i < tableNames.length; i++) {
db.execSQL("drop table if exists" + tableNames[i]);
}
// 重新初始化
onCreate(db);
}
}
}
}
结尾
里面收集了22种语言的坑爹代码集合,大家感兴趣的可以去看下,它不仅能带给你娱乐,还能让你学习和避免一些常见的编程错误。无论你是想放松一下还是寻找学习资源,这个仓库都值得一看。
那么大家有没有遇到过坑爹的代码片段?请在评论中分享一下吧!