哇好久没写博客了!本来想早早睡觉的,舍友还在噼里啪啦的吃鸡!反正睡不着还是敲代码。在最近这个项目中,涉及一个对课程生成一个邀请码,加入这个课程必须输入邀请码才行。那么这里就涉及到如何涉及一个较短的最好是英文和数字组成的不重复的邀请码!对于这个场景,我给出的解决方案就是随机字符串+课程id就好了,id本身就不会重复,这里这个问题就这样轻松的解决了!
但这里有一个问题,这里在生成这个邀请码的时候,我们需要对数据库进行一次查询,得到id之后才能生成邀请码,这样对数据库的一次查询操作,虽然在这个学校的小型项目看起来不起眼,但是如果在高并发的场景下,这样的效率还是比较低的!
我经过查找资料,一般有以下几种生成不重复的随机码的方法:



阅读全文 »

最近在学习过程中是始终不能很好的定义VO DTO这些对象,在百度看到一篇写的很好的文章,特转过来!
概念:
VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。
DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。






阅读全文 »

首先在cmd模式下进入redis的目录,
然后使用
redis-cli -p 7001(指定进入端口号为7901的redis数据库)
进入该端口的redis数据库之后有以下两种清空缓存的命令

1.清空当前redis数据库缓存FLUSHDB

flushdb

2.清空整个redis缓存FLUSHALL

flushall

在做kafka消费的时候,consumer的配置一直是周期性自动提交消费成功。
但问题来了,如果poll到的数据没有被成功消费,那么逻辑上应该被标记为未被消费,等待队列的第二次尝试拉取消费(虽然这样也不对,但是就这样硬着头皮说下去先)。那么这里应该在每次数据集合records被poll拉取之后,在对每个record进行业务处理完成成功之后,对broker进行一次提交(提交下一次poll出去数据的offset位置),这里提交我就用到

public void commitSync(Map<TopicPartition,OffsetAndMetadata> offsets)

具体实现:

for (TopicPartition partition : records.partitions()) {
         List<ConsumerRecord<String, String>> partitionRecords = records.records(partition);
         // 数据处理
         for (ConsumerRecord<String, String> record : partitionRecords)
         {
               System.out.println(record.offset() + ": " + record.value());
         }
         // 取得当前读取到的最后一条记录的offset
         long lastOffset = partitionRecords.get(partitionRecords.size() - 1).offset();
         // 同步提交offset,记得要 + 1
         consumer.commitSync(Collections.singletonMap(partition, new OffsetAndMetadata(lastOffset + 1)));
}

转载自 java那些事 微信公众号,值得参考。
看完觉的自己两年的功夫还不算白费,起码90%的英文单词还认识哈哈哈

                                        好好学习,天天向上

1.Core Java部分

          这是最基础的,对于一个java高级开发/设计人员,你需要对这一部分达到精通的水平,重点内容如下:
        a.面向对象编程思想(封装继承多态接口)
        b.字符串处理
        c.java.lang包,java.util包等常用包
        d.java异常处理

2.Java高级部分

   a.Java I/O流
   b.Java多线程技术
   c.Java网络编程
   d.Java Swing
      后两项可以了解即可,如果项目需要可以深入研究

3.前端基本技能

       * HTML + CSS网页开发
       * JavaScript
       * jQuery
       * 浏览器兼容性 CSS hack(了解)

4.熟练使用JSP + Servlet进行开发
5.MVC设计模式,原理,以及相关框架,如Struts
6.SSH框架
7.缓存技术 session & cookie
8.熟练使用一种以上Java开发工具(Eclipse/MyEclipse/Jbuilder/Jcreator/IntelliJIEDA/NetBeans)
9.熟练使用XML

  JDOM w3c.dom SAX

10.Java设计模式

  工厂模式,单例模式 ==

11.Java反射机制

  反射的各种用法

12.了解或熟悉 C, C++, .NET
13.熟悉JDK的配置,环境变量
14.数据库oracle必学,其他最好了解一种以上(MySQL,sql server,access==)

       oracle:视图,索引,存储过程,触发器,游标,包,常用函数 ==

15.数据库原理

     事务的原理,锁机制,表连接,复杂查询语句(工作经验),性能调优,锁表以及解决方案==

16.JDBC,连接池
17.Ajax,反向Ajax
18.HTTP协议,request 和 response的原理,HTTP status(了解常用的),Https原理
19.熟悉Linux基本命令,使用过Linux/Unix系统,可以编写shell脚本,可以在Linux上部署项目
20.了解windows系统批处理脚本bat
21.了解HTML5,最好学习过
22.熟悉一种JS框架,如Prototype
23.J2EE原理 熟悉一种以上web容器如Tomcat,JBoss,websphere,weblogic==
24.熟悉ant或maven
25.熟悉一门脚本语言,如Python ,ruby
26.了解PHP/ asp

27.了解ftp协议及原理

28.熟练使用Junit测试,熟悉Mockito等测试工具

29,熟悉javac,javadoc,native,native2ascii等常用命令
30.熟悉常用的排序算法,如冒泡排序,快速排序等,最好自己研究过一些的算法。
31.了解Flex(不学也没关系)
32.了解敏捷开发模式
33.工作流workflow至少用过一种,如OSworkflow,了解原理
34.使用过VPN了解其原理
35.熟悉jstl表达式和el表达式
36.熟悉webservice,WSDL,SOAP
37.图片处理,如图片上传,预览,限制大小等
38.版本控制工具,CVS VSS SVN
39,JSON技术,JSON+AJAX
40.分页技术,最好自己实现过不仅仅是用过要知道原理
41.Java Mail
42.Java读写txt,excel,JXL技术
43.JVM原理,JVM内存管理,GC,Java堆栈池
44.熟练使用下面的工具:

    office办公软件,word,excel,ppt等
    plsql,sqldevelop 数据库开发工具
    outlook大公司都用
    ue编辑器
    浏览器控制台,调试
    SHH/PUTTY 远程

45.UML建模工具Rational Rose等

  1. 使用log4j

47.使用过开放Api如百度,腾讯街景,新浪微博等

48.页面静态化技术(伪静态页面)

49.报表技术,使用过报表制作工具,如水晶易表。

50.定时任务,如spring batch ,学会自定义batch任务(不适用第三方工具)

51.了解uuid

52.b/s 和 c/s架构

53.正则表达式

54.了解jndi jms

55.ERP

56.UNICODE编码,乱码解决

57.开源网络编辑器,如ckEditor

58.二进制原理

59.使用过,了解过开源论坛框架,如discuzz

60.GWT,Closure框架

61.了解大数据,云计算

62.搜索引擎搜索技术

63.软件工程,项目管理