demo项目开发笔录(开发技巧)

笔录软件开发 初衷 在公安工作中经常会需要记笔录,但是几乎很难找到免费且易用的笔录软件,想要随U盘使用更为困难。因此暂时想开发一款简单易用且能够跟随U盘免安装的笔录软件。 功能要求 考虑到使用软件的人不同,在最后生成的笔录文件中信息也可能不同,因此设置登录与注册界面。打开软件,进入登录界面,输入用户名及密码,附属注册按钮。点击注册按钮进入注册界面,要求输入姓名、警号、工作单位等信息。 ... 阅读详情

这里记录一些小技巧和注意事项:

一、

注册时给密码加密,md5方式,并加“盐”,以确保不会被数据库人员识别密码,也不会被md5库被破解密码。

加密如下:

/**
	 * Md5加密
	 */
	public static String md5(String str,String salt){
		return new Md5Hash(str,salt).toString();
	}

第一个参数就是原密码,salt是干扰参数,计算结果是一串md5密码,此密码不可被反向逆推,所以能保证安全。

在保存时对原密码进行md5计算得到新密码然后保存即可。

使用如下:

/**
	 * 用户登录
	 */
	@RequestMapping("/login")
	public String login(Users user, HttpServletRequest request){
		Subject subject= SecurityUtils.getSubject();
		UsernamePasswordToken token=new UsernamePasswordToken(user.getUsername(), CryptographyUtil.md5(user.getPassword(),"gcc"));
		try{
			subject.login(token);
			return "redirect:/index.html";
		}catch(Exception e){
			e.printStackTrace();
			request.setAttribute("user", user);
			request.setAttribute("errorMsg", "用户名或密码错误!");
			return "redirect:/frontLogin.html";
		}
	}

在用shiro时将表单密码进行相同方式的md5计算得到对应密码,然后正常使用shiro即可。

二、

在使用mybatis时返回方式由resultMap和resultType两种,笔者原先使用前者,后来习惯使用后者,原因是可以少写点代码,但使用resultType方式返回的数据库字段如果和实体属性名字不相同时,那么得到的数据无法填充到对应字段,这样就出现了一个有趣的bug例如:

<select id="getUser" parameterType="String" resultType="Users">
		select *
		 from t_users a where username=#{username}
</select>

查询指定用户名的所有信息,数据库字段如下:


实体字段如下:


然后sql查询后所得实体,除了picUrl字段没有数据,其他都正常,日志也不会报错。

这种情况修改sql(加别名)如下即可:

	<sql id="UsersColumns">
		a.id AS "id",
		a.username AS "username",
		a.nickname AS "nickname",
		a.password AS "password",
		a.company AS "company",
		a.job AS "job",
		a.city AS "city",
		a.profile AS "profile",
		a.pic_url AS "picUrl"
	</sql>

	<select id="getUser" parameterType="String" resultType="Users">
		select
			<include refid="UsersColumns"/>
		 from t_users a where username=#{username}
	</select>

三、

在开发中,大部分人喜欢使用new Date()来获取时间,使用方便,同时能获取其他信息,比如:小时,分钟等。但只是为了获取毫秒数,就可以直接使用System.currentTimeMillis()来获取,来取代new Date().getTime(),特别是在多次这样调用时,效率上会高一点。

下面是源码:

/**
     * Allocates a <code>Date</code> object and initializes it so that
     * it represents the time at which it was allocated, measured to the
     * nearest millisecond.
     *
     * @see     java.lang.System#currentTimeMillis()
     */
    public Date() {
        this(System.currentTimeMillis());
    }
/**
     * Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT
     * represented by this <tt>Date</tt> object.
     *
     * @return  the number of milliseconds since January 1, 1970, 00:00:00 GMT
     *          represented by this date.
     */
    public long getTime() {
        return getTimeImpl();
    }

    private final long getTimeImpl() {
        if (cdate != null && !cdate.isNormalized()) {
            normalize();
        }
        return fastTime;
    }

四、$.post和$.ajax

笔者原先使用$.ajax,近来觉得$.post书写更顺畅,后者的格式如下:

jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求

具体例子如下:

$.post("${pageContext.request.contextPath}/saveArticle.html",
                    {	'title':title,
                        'typeId':typeId,
                        'content':content
                    },
                    function(result){
                        if(result.flag){
                            alert("发布成功");
                        }
                    },"json");

使用的感觉像是给一个方法传递四个参数,熟悉参数类型即可,而$.ajax简单的实际案例如下:

$.ajax({ 
  type:'get', 
  url:'http://www.www.daimajiayuan.com/rss', 
  beforeSend:function(XMLHttpRequest){ 
    //ShowLoading(); 
  }, 
  success:function(data,textStatus){ 
    $('.ajax.ajaxResult').html(''); 
    $('item',data).each(function(i,domEle){ 
      $('.ajax.ajaxResult').append('<li>'+$(domEle).children('title').text()+'</li>'); 
    }); 
  }, 
  complete:function(XMLHttpRequest,textStatus){ 
    //HideLoading(); 
  }, 
  error:function(){ 
    //请求出错处理 
  } 
}); 

使用上更加繁琐,而且理解上也有不顺畅的感觉,所以如果您使用的是较为简单的异步响应可以尝试书写更流畅的$.post方式。

注:

$.post的data数据的别名如果和后台接收的对象的属性同名,则会自动赋值给对象实体。

如果使用同步请使用$.ajax;  $post默认异步,改同步需要做如下处理:

  $.ajaxSettings.async = false;  
  $.post("/saveArticle.html", data, function(result) {  
     // 请求处理  
  },"json"); 
  $.ajaxSettings.async = true; 

五、mybatis传参为多种不同类型时怎么处理

给接口方法取别名,使用如下:

List<Article> getList(@Param("username") String username, @Param("pageStart") int pageStart, @Param("pageSize") int pageSize);
<select id="getList" resultMap="ArticleResult">
	SELECT *
	from t_article a
	WHERE a.username=#{username} ORDER BY a.postTime DESC LIMIT #{pageStart},#{pageSize}
</select>

六,json使用

    @ResponseBody
    @RequestMapping(value = { "/autoKpiData" })
    public String autoKpiData(Master master, HttpServletRequest request) {
        try {
            String planId = request.getParameter("planId");
            String flag=kpiDataService.autoKpiData(master,planId);
            String json = JsonMapper.toJsonString(master);
            Master master = (Master) JsonMapper.fromJsonString(json,Master.class);
            return flag;
        } catch (Exception e) {
            return e.getMessage();
        }
    }

    1,使用@ResponseBody,返回的数据不是html标签的页面,而是其他某种格式的数据(如json、xml等),可以简化原始的写法,如PrintWriter的处理,如下:

                JSONObject result = new JSONObject();
                result.put("flag", true);
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out=response.getWriter();
		out.println(result.toString());
		out.flush();
		out.close();

   

 2,通过JsonMapper.toJsonString()将实体类型转换成json类型,可以通过ajax的回调对象result,对象.属性名来取值。

在页面取到规则的(对应属性名字)json值时也可以通过JsonMapper.fromJsonString来将json数据填充到实体属性里。

mavne引入如下:

        <!-- jackson json -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-jaxb-annotations</artifactId>
            <version>${jackson.version}</version>
        </dependency>

对ObjectMapper简单封装的类如下:

import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;

import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.JsonParser.Feature;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.util.JSONPObject;
import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

/**
 * 简单封装Jackson,实现JSON String<->Java Object的Mapper.
 * 封装不同的输出风格, 使用不同的builder函数创建实例.
 */
public class JsonMapper extends ObjectMapper {
	private static final long serialVersionUID = 1L;
	private static Logger logger = LoggerFactory.getLogger(JsonMapper.class);
	private static JsonMapper mapper;
	public JsonMapper() {
		this(Include.NON_EMPTY);
	}

	public JsonMapper(Include include) {
		// 设置输出时包含属性的风格
		if (include != null) {
			this.setSerializationInclusion(include);
		}
		// 允许单引号、允许不带引号的字段名称
		this.enableSimple();
		// 设置输入时忽略在JSON字符串中存在但Java对象实际没有的属性
		this.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
        // 空值处理为空串
		this.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>(){
			@Override
			public void serialize(Object value, JsonGenerator jgen,
					SerializerProvider provider) throws IOException,
					JsonProcessingException {
				jgen.writeString("");
			}
        });
		// 进行HTML解码。
		this.registerModule(new SimpleModule().addSerializer(String.class, new JsonSerializer<String>(){
			@Override
			public void serialize(String value, JsonGenerator jgen,
					SerializerProvider provider) throws IOException,
					JsonProcessingException {
				jgen.writeString(StringEscapeUtils.unescapeHtml4(value));
			}
        }));
		// 设置时区
		this.setTimeZone(TimeZone.getDefault());//getTimeZone("GMT+8:00")
	}

	/**
	 * 创建只输出非Null且非Empty(如List.isEmpty)的属性到Json字符串的Mapper,建议在外部接口中使用.
	 */
	public static JsonMapper getInstance() {
		if (mapper == null){
			mapper = new JsonMapper().enableSimple();
		}
		return mapper;
	}

	/**
	 * 创建只输出初始值被改变的属性到Json字符串的Mapper, 最节约的存储方式,建议在内部接口中使用。
	 */
	public static JsonMapper nonDefaultMapper() {
		if (mapper == null){
			mapper = new JsonMapper(Include.NON_DEFAULT);
		}
		return mapper;
	}
	
	/**
	 * Object可以是POJO,也可以是Collection或数组。
	 * 如果对象为Null, 返回"null".
	 * 如果集合为空集合, 返回"[]".
	 */
	public String toJson(Object object) {
		try {
			return this.writeValueAsString(object);
		} catch (IOException e) {
			logger.warn("write to json string error:" + object, e);
			return null;
		}
	}

	/**
	 * 反序列化POJO或简单Collection如List<String>.
	 * 
	 * 如果JSON字符串为Null或"null"字符串, 返回Null.
	 * 如果JSON字符串为"[]", 返回空集合.
	 * 
	 * 如需反序列化复杂Collection如List<MyBean>, 请使用fromJson(String,JavaType)
	 * @see #fromJson(String, JavaType)
	 */
	public <T> T fromJson(String jsonString, Class<T> clazz) {
		if (StringUtils.isEmpty(jsonString)) {
			return null;
		}
		try {
			return this.readValue(jsonString, clazz);
		} catch (IOException e) {
			logger.warn("parse json string error:" + jsonString, e);
			return null;
		}
	}

	/**
	 * 反序列化复杂Collection如List<Bean>, 先使用函數createCollectionType构造类型,然后调用本函数.
	 * @see #createCollectionType(Class, Class...)
	 */
	@SuppressWarnings("unchecked")
	public <T> T fromJson(String jsonString, JavaType javaType) {
		if (StringUtils.isEmpty(jsonString)) {
			return null;
		}
		try {
			return (T) this.readValue(jsonString, javaType);
		} catch (IOException e) {
			logger.warn("parse json string error:" + jsonString, e);
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 構造泛型的Collection Type如:
	 * ArrayList<MyBean>, 则调用constructCollectionType(ArrayList.class,MyBean.class)
	 * HashMap<String,MyBean>, 则调用(HashMap.class,String.class, MyBean.class)
	 */
	public JavaType createCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
		return this.getTypeFactory().constructParametricType(collectionClass, elementClasses);
	}

	/**
	 * 當JSON裡只含有Bean的部分屬性時,更新一個已存在Bean,只覆蓋該部分的屬性.
	 */
	@SuppressWarnings("unchecked")
	public <T> T update(String jsonString, T object) {
		try {
			return (T) this.readerForUpdating(object).readValue(jsonString);
		} catch (JsonProcessingException e) {
			logger.warn("update json string:" + jsonString + " to object:" + object + " error.", e);
		} catch (IOException e) {
			logger.warn("update json string:" + jsonString + " to object:" + object + " error.", e);
		}
		return null;
	}

	/**
	 * 輸出JSONP格式數據.
	 */
	public String toJsonP(String functionName, Object object) {
		return toJson(new JSONPObject(functionName, object));
	}

	/**
	 * 設定是否使用Enum的toString函數來讀寫Enum,
	 * 為False時時使用Enum的name()函數來讀寫Enum, 默認為False.
	 * 注意本函數一定要在Mapper創建後, 所有的讀寫動作之前調用.
	 */
	public JsonMapper enableEnumUseToString() {
		this.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
		this.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);
		return this;
	}

	/**
	 * 支持使用Jaxb的Annotation,使得POJO上的annotation不用与Jackson耦合。
	 * 默认会先查找jaxb的annotation,如果找不到再找jackson的。
	 */
	public JsonMapper enableJaxbAnnotation() {
		JaxbAnnotationModule module = new JaxbAnnotationModule();
		this.registerModule(module);
		return this;
	}

	/**
	 * 允许单引号
	 * 允许不带引号的字段名称
	 */
	public JsonMapper enableSimple() {
		this.configure(Feature.ALLOW_SINGLE_QUOTES, true);
		this.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
		return this;
	}
	
	/**
	 * 取出Mapper做进一步的设置或使用其他序列化API.
	 */
	public ObjectMapper getMapper() {
		return this;
	}

	/**
	 * 对象转换为JSON字符串
	 * @param object
	 * @return
	 */
	public static String toJsonString(Object object){
		return JsonMapper.getInstance().toJson(object);
	}
	
	/**
	 * JSON字符串转换为对象
	 * @param jsonString
	 * @param clazz
	 * @return
	 */
	public static Object fromJsonString(String jsonString, Class<?> clazz){
		return JsonMapper.getInstance().fromJson(jsonString, clazz);
	}
	
	/**
	 * 测试
	 */
	public static void main(String[] args) {
		List<Map<String, Object>> list = Lists.newArrayList();
		Map<String, Object> map = Maps.newHashMap();
		map.put("id", 1);
		map.put("pId", -1);
		map.put("name", "根节点");
		list.add(map);
		map = Maps.newHashMap();
		map.put("id", 2);
		map.put("pId", 1);
		map.put("name", "你好");
		map.put("open", true);
		list.add(map);
		String json = JsonMapper.getInstance().toJson(list);
		System.out.println(json);
	}	
}

    3,data传值方式如下时:

$.post(
	"${ctx}/pa/in/kpiData/autoKpiData",
	{
	     'id':masterId,
         'planId':planId,
         'groupId':groupId
	},
	function (result) {
	   if("Success"==result){
                $("#btnSubmit").click();
                  window.setTimeout(function () { $.jBox.tip('操作成功!', 'success'); }, 500)
		}else{
                  window.setTimeout(function () { $.jBox.tip('操作失败,请确认是否已有考核计划在运行!', 'error'); }, 1000)
		}
           },
	"json"
)

spring也可以将属性名对应的数据填充到实体内:

public String autoKpiData(Master master, HttpServletResponse response,HttpServletRequest request){...}





【鸿蒙开发】学习笔录——通过startAbility拉起文件处理类应用 开发者可以通过调用startAbility接口,由系统从已安装的应用中寻找符合要求的应用来实现打开特定文件的意图,例如:浏览器下应用下载PDF文件,可以调用此接口选择文件处理应用打开此PDF文件。开发者需要在请求中设置待打开文件的URI路径(uri)、文件格式(type)等字段,以便系统能够识别,直接拉起文件打开应用或弹出一个选择框,让用户选择合适的应用来打开文件,效果示意如下图所示。表1 startAbility请求中。parameters 相关参数说明。flags 相关参数说明。 阅读详情

相关推荐

【鸿蒙南向开发】OpenHarmony实现360度的全景渲染功能—ThreeJs360Demo

ThreeJs360Demo,使用系统提供的Web组件,加载threeJs,实现360度的全景渲染功能。

huchenghe2的博客 1017

后端开发demo示例

后台开发学习 目录后台开发学习系统结构一、项目目录结构二、各部分内容,以demo为例1.domainmapperserviceimpl接口controllerxml(sql语句)总结 系统结构 一、项目目录结构 二、各部分内容,以demo为例 1.domain 代码如下(示例): package com.sddx.system.domain; public class Demo { private int id; private String name; private

qq_43313505的博客 2942

笔录软件好用

笔录软件好用

软件开发demo是什么意思_社区分享 | 快速入门必看!一文读懂 Demo (手把手ver.)...

本文来自社区投稿与征集,作者东泽 EuryChen。了解更多:https://github.com/netpi/explain-a-tensorflow-demo,原文:https://mp.weixin.qq.com/s/sffUvod_KlmvtVI-W3PLEQ我们总有一种感觉,机器学习门槛高、难入门。这是因为这里有太多晦涩的概念「神经网络」、「评估指标」、「优化算法」等让初学者老...

weixin_39873356的博客 6828

html5-demo

快速入门html5 开发,按照demo模板。直接改写,可以轻松快速学会html5.适合初学者的和准备采用htnl5的开发人员。

ArcGIS通过已知坐标点转面(通过excel文件,有工具可批量生成面要素)

通过使用ArcGIS中的工具,将坐标点XY数据转换成可视化的点线面矢量数据,更加方便快捷有效的获取对应信息

qq_41046162的博客 3万+

android开发demo的步骤

创建一个简单的Android开发Demo可以帮助您快速了解Android应用开发的基本流程。以下是创建一个简单的“Hello, World!

极客栈 1025

YOLOv8缺陷检测可视化界面实战:PyQt5布局设计与代码实现

本文详细介绍了如何利用PyQt5为YOLOv8缺陷检测模型构建一个专业、易用的可视化界面。通过实战讲解PyQt5的布局管理器设计、信号槽机制与YOLOv8核心的集成,帮助开发者快速将AI模型部署为直观的桌面应用,提升工业质检等场景的落地效率。

redis7keeper的博客 758

demo项目开发笔录(页面技巧)

这里记录一些css的实用小技巧一、自定义grey颜色渐变,附带常用颜色:.w3-theme-l5 {color:#000 !important; background-color:#f9f9f9 !important} .w3-theme-l4 {color:#000 !important; background-color:#ececec !important} .w3-theme-l3 {co...

gcc_java的博客 354

WGS-84 ECEF ENU 坐标系学习记录

地球坐标系固定在地球上而随地球一起在空间做公转和自转运动,因此地球上任一固定点在地球坐标系的坐标就不会由于地球旋转而变化。地心地固直角坐标系和大地坐标系都属于这种坐标系。 一、 几种坐标系 地心地固直角坐标系(ECEF)坐标系 其原点为地球的质心,x轴延伸通过本初子午线(0度经度)和赤道(0deglatitude)的交点。 z轴延伸通过的北极(即,与地球旋转轴重合)。 y轴完成右手坐标系,穿...

YYshuangshuang的博客 1万+

用生成式AI自动生成测试用例的完整教程

本文旨在帮助测试工程师、开发人员快速掌握“生成式AI自动生成测试用例”的核心技术,覆盖从概念理解、工具选择到实战落地的全流程。无论是Web应用、API接口还是移动端功能测试,你都能找到可复用的方法。本文将按照“概念→原理→实战→避坑”的逻辑展开:先通过生活案例理解生成式AI如何生成测试用例,再拆解核心算法原理,接着用Python代码演示完整生成流程,最后分享实际应用中的优化技巧和未来趋势。生成式AI:能“创造内容”的AI模型(如ChatGPT、CodeLlama),像会写作文的智能笔。测试用例。

AIGC应用创新大全的博客 1580

公安笔录结构化处理提速方案

本文介绍如何利用vLLM高性能推理引擎提升公安笔录的结构化处理效率,通过PagedAttention和连续批处理技术显著提升显存利用率与吞吐量,实现单服务器日均处理能力达百级并发,结合Qwen等中文大模型,可在3秒内完成笔录信息提取,助力智慧警务从信息化迈向智能化决策。

weixin_32480007的博客 433

基于Simulink的电动车PMSM能量泄放与回收系统仿真设计

摘要 本文设计了一个基于Simulink的电动车PMSM能量泄放与回收系统仿真模型。系统采用分层建模方案,包含永磁同步电机(PMSM)矢量控制、电池管理和泄放功率计算等核心模块。通过详细的参数计算和MATLAB脚本实现,模拟了电动车在制动时的能量回收过程。重点研究了泄放电阻的控制策略,提出基于母线电压和电池SOC的多目标优化算法,确保系统在保护硬件安全的同时最大化能量回收效率。仿真模型包含完整的数学推导和模块搭建指南,为电动车能量管理系统设计提供了有效的仿真验证平台。

huanghm88的专栏 193

demo项目开发笔录(UEditor实践)

这里记录一个文本编辑插件的使用:UEditor 是由百度「FEX前端研发团队」开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码。这里笔者在完成“写文章”功能时使用了这个编辑插件,官方文档调用方式如下:一,下载插件二,调用如下:&lt;!DOCTYPE HTML&gt; &lt;html lang="en-US"&gt; &lt;h...

gcc_java的博客 645

基于深度学习的工业零件缺陷检测系统

工业零件缺陷检测系统摘要 本文介绍了一个基于深度学习的工业零件缺陷检测系统解决方案。该系统采用Faster R-CNN目标检测算法,结合PyTorch框架和OpenCV图像处理库,实现了对工业零件表面缺陷(如裂纹、划痕、凹坑等)的自动检测与定位。系统包含完整的开发流程:从数据采集与标注、数据增强预处理、模型构建与训练,到最终的评估与部署。相比传统机器视觉方法,该深度学习方案具有更强的特征表示能力和环境适应性,能够有效提升工业质检的准确率和效率。文章详细阐述了系统架构设计、实现细节和优化策略,并提供了完整的代

huanghm88的专栏 286

仿真学习系列(三十):Sigrity设计文件(Altium Designer和Allegro)导入

很多刚接触 Sigrity 的工程师都会产生疑问:Sigrity 功能这么多,是不是门槛很高?我能学得会吗? 其实,Sigrity 的核心并不在“操作难”,而是在“理解仿真背后的机理”。一旦掌握基本流程,你会发现它并没有想象中那么复杂,反而能大大提升你的高速设计能力。本节内容,就是从最简单的一步开始 —— 把你的设计文件正确导入 Sigrity。

案例文章,高速信号 524

demo项目开发笔录(web和mobile)

笔者在demo里使用的样式文件是w3.css,支持响应式,但笔者前端能力有限,并不能一次编写统一使用,于是对访问作了判断,并删减了移动端页面的部分内容。一、判断是移动端还是PC端的请求:package com.gcc.modules.untils; /** * Created by gcc on 2018/5/4. */ public class IsMobileUtil { pri...

gcc_java的博客 339

RK3588开发笔记-spi扩展canfd芯片MCP2518FD调试笔记

在嵌入式系统开发中,CANFD(控制器局域网灵活数据速率)是一种广泛应用于汽车和工业自动化领域的通信协议。为了满足项目需求,我们在RK3588平台上通过SPI接口扩展了CANFD芯片MCP2518FD,之所以用spi进行canfd扩展,是为了解决原生RK3588原生can不够稳定的问题(发送扩展帧有几率编程标准帧,RK3568/3588均存在该问题)。通过本次调试工作,我们成功地在RK3588平台上扩展了CANFD芯片MCP2518FD,并实现了与CAN总线的稳定通信。

flypig has a dream! 4225

人脸确认系统demo开发笔录

1、获取当前程序执行目录CString getModulePath(void){ char curPath[100]; GetModuleFileName(NULL,curPath,100);   char   drive[100];    char   dir[100];    char   fname[100];    char   ext[100];          _splitpat

minigabriel的专栏 1140

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

demo项目开发笔录(简单分页实践)

这里记录一个简单的前后翻页功能。首先晒下主要效果页面:声明,这里笔者还未完全开发完模块功能,只是实现了基本的数据和翻页功能。这里先记录几点,实用操作:一、分页sql笔者使用的是mysql,分页关键字是limit,之后跟的内容,首个变量从0开始,意义是从第几条数据进行分页,次个变量意义是本次查询获取几条数据。如下: &lt;select id="getList" resultMap="Article...

gcc_java的博客 289

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

demo项目开发笔录(头像上传)

这里记录下一个完整的头像上传过程,实用部分笔者会指出,嘿嘿嘿。工具:ideacss文件:w3.css声明,笔者没有使用ajax来上传头像,原因是头像为单个,内容小,有需要转ajax的简单修改即可。步骤:首先是绘制静态页面(包括修改默认上传样式),然后就是上传头像,最后反馈上传结果这里直接给出主要html代码:&lt;div class="w3-container w3-white w3-round...

gcc_java的博客 427

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

demo项目开发笔录(问题记录)

这里不做详细的开发过程记录,主要记录一些开发过程遇到的问题和一些小技巧:问题一:    spring配置 no matching editors or conversion strategy found 异常!  这是一个比较蛋疼的问题,笔者在自定义的shiro的Realm中调用了UserService,因为项目逻辑并不复杂,所以service层并没有抽象接口层,UserService是一个类。 ...

gcc_java的博客 299

web前端开发之JavaScript学习笔录

JavaScript 是互联网上最流行的脚本语言,web前端开发之JavaScript学习笔录,浅显易懂,常复习常受用

陈二狗的博客 1387

Android客户端开发规范笔录

概述此文档是参照《Google Java编程风格指南》编写的。特别说明 在代码中除注释外尽量不要出现中文; 字符串都从res/values/string.xml中引用; 色彩值都从res/values/colors.xml中引用; Android studio默认的格式化是遵循《Google Java编程风格指南》,因此,在编写好代码之后,都需要去进行格式(快捷键Ctrl+Alt+L),以确保代码格

移动开发学习笔记 1370

Fun-ASR-MLT-Nano-2512效果展示:法庭庭审录音→专业术语增强→结构化笔录生成

本文介绍了如何在星图GPU平台上自动化部署Fun-ASR-MLT-Nano-2512语音识别模型 二次开发构建by113小贝镜像,实现法庭庭审录音到结构化笔录的端到端生成。该方案支持角色标注、法律术语增强与时间戳对齐,显著提升司法文书制作效率,适用于法院、律所等真实业务场景。

weixin_35755640的博客 427

Whisper-large-v3实战效果:法庭庭审录音→结构化笔录→关键词高亮导出

本文介绍了如何在星图GPU平台上自动化部署Whisper语音识别-多语言-large-v3语音识别模型 二次开发构建by113小贝镜像,高效实现法庭庭审录音到结构化笔录的全流程处理,支持自动角色分离、时间戳标注及法律关键词高亮导出,显著提升司法文书生成效率。

weixin_42599558的博客 258
上一篇: demo项目开发笔录(问题记录)
下一篇: demo项目开发笔录(页面技巧)
gcc_front
博客等级 码龄9年 16粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值