背景:做程序员的第三年。回想起自己经历的问题。踩过的坑。其实被记录下来的很少。可能是忙或者觉得问题太简单记录人家会觉得自己菜。总之没有养成常常分享和记录的习惯。和小伙伴一合计,决定建了一个微信群。用来互相监督和记录日常遇到的问题。大家相互鼓励。共同进步。所以成立了新生代表农民工们的微信群。这篇博客用来记录,群友们总结的思路和问题。便于日后查看。群里前端后端都有,只要你想学习想进步,想分享。想记录,都欢迎扫描二维码加我微信进群。

群主二维码

相关记录

React

日期:2021-09-01
简述人:Timor
简述标题:React-hook,浏览器
简述内容:
1)问题:使用dispatch发请求后页面一直死循环?
解决方法:发请求要写在useEffect里面。
  useEffect(() => {
    dispatch && dispatch({
      type: 'test/Query',
      payload: {},
      callback: (data) => {
        console.log(data);
      }
    })
  }, [])

Angular

日期:2021-09-02
简述人:Timor
简述标题:Angular之组件传参
简述内容:

1)问题:父页面如何往组件页面传参?
解决方法:组件页面定义 @Input() data : any接收父页面的传参。
父页面调用组件页面用[data]传递参数。
 <meeting-unaccepted [data]="meetingList"></meeting-unaccepted>

2)问题:组件页面如何往父页面传参?
解决方法:组件页面定义  @Output() test: EventEmitter<any> = new EventEmitter<any>();
方法利用方法传参给父页面。
父页面调用组件页面用 (test)="test($event)"来接受组件传递回来的参数。
 <meeting-unaccepted [data]="meetingList"  (test)="test($event)"></meeting-unaccepted>

3)问题:父页面如何获取组件页面全部实例?
解决方法:父页面定义  @ViewChild('meetingContent') meetingContent: MeetingUnacceptedComponent;
用来调取组件页面全部实例。
 <meeting-unaccepted #meetingContent[data]="meetingList"  (test)="test($event)"></meeting-unaccepted>

echarts

日期:2021-08-20
简述人:Timor
简述标题:ng echatrs图表
简述内容:
1):问题:ng echatrs图表Y轴数值过大,被遮挡。
     解决方法:1:设置图表左边距离。grid属性: 2:提取万,Y轴上方标注单位/万。
2):问题:ng echarts图表提示框内容过长,需要修改样式。
     解决方法:tooltip属性下的formatter属性里调整样式。

vue

日期:2021-08-24
简述人:华上进
简述标题:excel转pdf文件功能
简述内容:
3):问题:vue读取流文件pdf并预览,预览不显示。
解决方法: 通过 <el-dialog>弹出层 加上

<el-dialog title="pdf预览" :visible.sync="isPdfShowDialog" top="5px"  width="95%" height="100%"  >
      <iframe :src="pdfUrl" frameborder="0"  width="95%" :height="ifrheight + 'px'" ></iframe>
 </el-dialog>

 并用 document.documentElement.clientHeight 获取高度,这儿不能用百分比获取,不然会高度很低。

4):问题:vue控件化页面抽离实现,及父子页面传值。
解决方法 : 父页面 通过 :show.sync="isShowDialog"  属性,子页面通过 props进行值的接受

 props: {
    show: { type: Boolean, default: false }, // 弹框可见标志
  },


watch: {
    // 监听show,visible 随着show变化而变化
    show: {
      immediate: true,
      handler(show) {
        this.visible = show;
      },
    },
  }

  在data() 中定义 visible: this.show 即可。
日期:2021-08-26
简述人:华上进
简述标题:组件化实现select组件多出调用
简述内容:
1):问题:组件业务相同但是回调不同。
解决方法:在点击click设置弹出层显示,并且动态赋值 select 的回调函数的传入的参数,设置值到downloadType,然后组件点击点击确定后回调走downloadByType()函数,然后去调用不同的回调函数即可。

 @click.native="isShowTemplateDialog = true ,downloadType = 'type1'"
 <SelectSheetTemplate
      :show.sync="isShowTemplateDialog "
      :sheetNames.sync="sheetNames"
      @subSuccess="downloadByType(downloadType)"
    ></SelectSheetTemplate>

 // 选择组件的公用回调函数
    downloadByType(type) {
      console.log(type)
      switch (type) {
        case 'type1': this.download1()
          break
        case 'type2': this.download2()
          break
      }
    }
日期:2021-09-10
简述人:华上进
简述标题:9月6号到9月10号开发遇到的一些问题
简述内容:
1):问题:项目中有个需求,前端excel 的xlsx文件格式得json字符传入后台,文件太大超出post默认请求最大限制2M,请求后台就报错。
解决方案:
#设定Httppost数据大小,解决post参数过大问题
server.tomcat.max-http-post-size=-1
设置成-1即可,-1表示不限制大小

2):问题:前端vue el-tree 树形 去掉选中的节点。
解决方案:
highlight-current 高亮属性 动态设置 true 显示 或者 false 不显示 。
额外的学习到了一点,属性前面加 : 冒号 是动态获取值(一个变量或者表达式),不加的(是对应的字符串字面量)。

 :highlight-current= isHighlightCurrentShow

js

 日期:2021-09-03
 简述人:华上进
 简述标题:
 1、[] 和 {}的开发中遇的问题;
 简述内容:
 1):问题:在开发过程中遇到了前端一个很奇怪的问题,2次请求第一次请求,ajax请求是有参数的,第二次就没值了,就很奇怪,在这儿折腾了好久,最后发现 因为我这儿是一个父子页面的一个传值,父页面定义的是{},子页面定义的是[],两边没统一,最后统一就解决了。
 解决方案:[] 和 {}的区别
 解释:
 []数组 创建  var name= ['hsj','cwd666']  调用 name.[1]
 {}对象 创建  var info= {'name':'hsj','age':23}  调用:info.name 、info['Name']

html

日期:2021-09-09
简述人:Timor
简述标题:placeholder换行
问题内容:
1)问题:项目需要对默认值进行换行。在placeholder值中用换行符 <br/>和 /r/n 等都没有作用
解决方法:用HTML转义符。&#10;  --- 换行 。&#13;  ---回车

java

日期:2021-08-24
简述人:华上进
简述标题:excel转pdf文件功能
简述内容:
1):问题:因为业务员原因,前端excel以json的格式写入到后台,后台解析成excel文件,HttpServletResponse  输出流,我想转成输入流(直接进行操作,文件不存储到本地) 。
解决方法:1:因为对流的理解比较少,就停留在普通的使用上,所以换了一种解决方式,先将输出流的数据写入到了本地,然后通过file读到文件流,对xlsx流文件进行操作,转换成pdf文件(存储到项目static文件目录下,然后用完即删除,实现伪不存到本地)。
2):问题:aspose配置excel转pdf 列太宽也显示到一页纸,行数过多自动换页显示
解决方法:  
PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
//把内容放在一张PDF 页面上,并且行数过多自动换行;
pdfSaveOptions.setAllColumnsInOnePagePerSheet(true);
日期:2021-09-03
简述人:华上进
简述标题:
1、mysql的json数据类型 ,数据持久层是mybatis-plus在java实体中要怎么定义,如何使用;
2、[] 和 {}的开发中遇的问题;
简述内容:
1):问题:之前没有使用过mysql 的json数据类型,导致不知如何下手

解决方案:
 // 在实体创建字段定义类型 加上如下注解,用Object去接受即可
 @TableField(typeHandler = FastjsonTypeHandler.class,value = "JSON_DATA")
    private Object jsonData;
日期:2021-09-10
简述人:华上进
简述标题:9月6号到9月10号开发遇到的一些问题
简述内容:
1):问题:vue实现将json字符写入文件实现下载。
解决方案:
当然在引入工具之前的下载相关的依赖

  // 引入工具类
  import { saveAs } from 'file-saver'
  const str = new Blob(['我是文本'], { type: 'text/plain;charset=utf-8' })
  saveAs('文本格式.jcll')

2):问题:在java后台实现 JSONObject 对象 删除json中的值,json引用对象的修改,不修改最终的对象。
解决方案:
直接remove("对象即可");
可以将json转为json字符,然后用JSONObject  对象接收。
  JSONObject jsonRemoObject = (JSONObject) JSONObject.parse(borderValueObject.toString());
  jsonRemoObject.remove("row_index");
  jsonRemoObject.remove("col_index");
4):问题:poi 报 XSSFCellStyle 对象创建过多,超出阈值,导致异常。
ps:这个问题最开始在网上查了很多资料,都是说把样式的创建提取到循环外面,但是都没有说,提到外面后导致的样式问题,可能他们都是样式固定的,我这边需要设置很多样式,也在群里问了很多,也没能解决,最后看到一篇博文说把 XSSFCellStyle对象存起来,相同的样式就用同一个XSSFCellStyle 对象即可,最后选择了使用map集合来做这样的一个操作代码如下,这样就解决了 XSSFCellStyle  对象创建最大次数超过阈值异常,**代码可以借鉴,可能不能拿来直接用,但是最重要的是这个思路**。
解决方案:
  // 定义样式map存储 XSSFCellStyle 单元格样式   放在循环外面
  Map<String, XSSFCellStyle> cellStyleMap = new HashMap<>();
  for(int index = 0; index < size; index++){
  CellStyle cellStyle = null;
  // 每个单元格样式进行样式进行组装成一个字符串 然后拿到样式map离去比较,若存在则直接在map中拿样式对象,解决样式对象创建最大值报错
        StringBuilder stringBdCompare = new StringBuilder();
        // jsonObjectValue 是样式json对象
        // 样式1  将样式进行拼接
       if (Objects.equals(null, jsonObjectValue.get("样式1"))) {
            stringBdCompare.append("样式1"=null,");
        } else {
            stringBdCompare.append("样式1"=" + jsonObjectValue.get("样式1").toString() + ",");
        }
        // 样式2  将样式进行拼接
         if (Objects.equals(null, jsonObjectValue.get("样式2"))) {
            stringBdCompare.append("样式2"=null,");
        } else {
            stringBdCompare.append("样式2=" + jsonObjectValue.get("样式2").toString() + ",");
        }
       // ......等等一些样式
    // 判断该单元格样式是否存在map集合中 存在则直接将值付给了 cellStyle  对象
     if (cellStyleMap.containsKey(stringBdCompare.toString())) {
         cellStyle = cellStyleMap.get(stringBdCompare.toString());
     } else {
     // 这里继续走原来的创建 XSSFCellStyle 的相关逻辑
     ..........
     .........
     ..........
      // 相同格式的单元格的样式对象
         cellStyleMap.put(stringBdCompare.toString(),cellStyle);
     }
}

idea

日期:2021-08-25
简述人https:华上进
简述标题:idea运行SpringCloud项目,更新项目后部分实体找不到。
简述内容:
1):问题:拉取svn项目后,启动项目找不到同事上传的代码对应的实体类,项目未正常加载,删除了子项目的iml文件导致项目pom变灰化了一条删除线。百度很多方案无法创建iml,且子项目图标为灰色(其他图标为标记蓝色)。
解决方法:开始以为是idea版本问题,更换了最新版本也不行,最后猜测应该是iml,文件的影响,最后删除项目中的idea文件夹,然后重新打开项目。

浏览器

日期:2021-09-01
简述人:Timor
简述标题:React-hook,浏览器
简述内容:
2)问题:接口加密规则?
解决方法:项目中通常都会前后端约定一套加密规则放在headers.Authorization中。例如:随机数+SHA256+Base64+时间戳+GUID。

3)问题:什么是跨域?
解决方法:是浏览器对JavaScript实施的安全限制,要遵守同源策略。当请求url的协议,域名,端口三者之间任意一个和当前页面url不同即为跨域。常用反向代理解决跨域问题。

other

日期:2021-09-03
简述人:华上进
简述标题:
1):问题:nacos配置不太清楚没修改,导致了一个很奇怪的问题,也很搞笑。
前天晚上加班,突然我的系统登陆不了了,然后我问了另外一个同事,他说他的可以登陆,一看时间不早了嘛,就想着明天再看,果然第二天就好了,然后昨天晚上又碰到了,导致我无法开发,最后打断点调试发现redis连接不上,最后发现是我最开始配置nacos的时候redis的连接没改过来,每次连接的都是给我nacos配置同事的redis,他一下班电脑已关机redis一关,我就登陆不上系统了,关键我还一直以为这是一个隐藏的bug。
解决方案:
修改了nacos配置把redis地址改为了本地。

Timor
37 声望20 粉丝