1、京淘商品后台管理实现
1.1 商品列表展现
1.1.1 商品POJO对象
package com.jt.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.experimental.Accessors;
@JsonIgnoreProperties(ignoreUnknown=true) //表示JSON转化时忽略未知属性
@TableName("tb_item")
@Data
@Accessors(chain=true)
public class Item extends BasePojo{
@TableId(type=IdType.AUTO) //主键自增
private Long id; //商品id
private String title; //商品标题
private String sellPoint; //商品卖点信息
private Long price; //商品价格 Long > dubbo Double精度问题
private Integer num; //商品数量
private String barcode; //条形码
private String image; //商品图片信息 1.jpg,2.jpg,3.jpg private Long cid; //表示商品的分类id
private Integer status; //1正常,2下架
//为了满足页面调用需求,添加get方法
public String[] getImages(){
return image.split(",");
}
}
1.1.2 表格数据页面结构
商品ID
商品标题
叶子类目
卖点
价格
库存数量
条形码
状态
创建日期
更新日期
1.1.3 请求URL地址
说明:如果采用UI框架并且添加了分页插件,则会自动的形成如下的URL请求地址
1.1.4 编辑ItemController
package com.jt.controller;
import com.jt.vo.EasyUITable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.jt.service.ItemService;
import org.springframework.web.bind.annotation.RestController;
@RestController //返回值都是JSON数据
@RequestMapping("/item")
public class ItemController {
@Autowired
private ItemService itemService;
/**
* 业务需求:
* 以分页的形式查询商品列表信息.
* 业务接口文档:
* url地址: http://localhost:8091/item/query?page=1&rows=20
* 参数信息: page 当前页数 rows 每页展现的行数
* 返回值: EasyUITable对象
* 方法1: 手写sql方式实现分页
* 方法2: 利用MP方式实现分页
*/
@RequestMapping("/query")
public EasyUITable findItemByPage(int page,int rows){
return itemService.findItemByPage(page,rows);
}
}
1.1.5 编辑ItemService
package com.jt.service;
import com.jt.pojo.Item;
import com.jt.vo.EasyUITable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.jt.mapper.ItemMapper;
import java.util.List;
@Service
public class ItemServiceImpl implements ItemService {
@Autowired
private ItemMapper itemMapper;
/*
SELECT * FROM tb_item LIMIT 0, 20 /*第一页 0-19
SELECT * FROM tb_item LIMIT 20,20 /*第二页 20-39
SELECT * FROM tb_item LIMIT 40,20 /*第三页 40-59
SELECT * FROM tb_item LIMIT (page-1)*ROWS,ROWS 40-59*/
/**
* 1.后端查询数据库记录
* 2.将后端数据通过业务调用转化为VO对象
* 3.前端通过VO对象的JSON进行数据的解析
*
*执行的sql:
* select * from tb_item order by updated desc LIMIT 0, 20
* @param page
* @param rows
* @return
*/
@Override
public EasyUITable findItemByPage(int page, int rows) {
//1.total 获取数据库总记录数
long total = itemMapper.selectCount(null);
//2.rows 商品分页查询的结果
int startNum = (page-1)*rows;
List- itemList = itemMapper.findItemByPage(startNum,rows);
//3.将返回值结果封装
return new EasyUITable(total,itemList);
}
}
1.1.6 编辑ItemMapper
手动编辑分页操作
public interface ItemMapper extends BaseMapper- {
//注意事项: 以后写sql语句时 字段名称/表名注意大小写问题.
@Select("SELECT * FROM tb_item ORDER BY updated DESC LIMIT #{startNum}, #{rows}")
List
- findItemByPage(int startNum, int rows);
}
1.1.7 MybatisPlus实现分页查询
编辑业务调用
@Service
public class ItemServiceImpl implements ItemService {
@Autowired
private ItemMapper itemMapper;
@Override
public EasyUITable findItemByPage(int page, int rows) {
//1.需要使用MP的方式进行分页
IPage- iPage = new Page<>(page,rows);
QueryWrapper
- queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("updated");
//MP通过分页操作将分页的相关数据统一封装到IPage对象中
iPage = itemMapper.selectPage(iPage,queryWrapper);
return new EasyUITable(iPage.getTotal(),iPage.getRecords());
}
}
1.1.8 编辑MybatisPlus配置类
说明:在jt-common中添加MP的配置文件
package com.jt.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration //标识配置类
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
}
2、商品分类目录实现
2.1 封装POJO对象
package com.jt.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
@TableName("tb_item_cat")
@Data
@Accessors(chain = true)
public class ItemCat extends BasePojo{
@TableId(type = IdType.AUTO)
private Long id; //主键ID
private Long parentId; //父级ID
private String name; //分类名称
private Integer status; //状态
private Integer sortOrder; //排序号
private Boolean isParent; //是否为父级
}
2.2 页面JS引入过程
2.2.1 引入JS/CSS过程
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
2.2.2 引入common.jsp
2.3 数据化格式化
2.3.1 格式化价格
1.页面标签
价格
2.页面JS
formatPrice : function(val,row){
return (val/100).toFixed(2);
}
2.3.2 格式化状态
状态
// 格式化商品的状态
formatItemStatus : function formatStatus(val,row){
if (val == 1){
return '正常 ';
} else if(val == 2){
return '下架 ';
} else {
return '未知';
}
}
2.4 格式化商品分类目录
2.4.1 页面结构分析
叶子类目
//格式化名称
findItemCatName : function(val,row){
var name;
$.ajax({
type:"get",
url:"/item/cat/queryItemName",
data:{itemCatId:val},
cache:true, //缓存
async:false, //表示同步 默认的是异步的true
dataType:"text",//表示返回值参数类型
success:function(data){
name = data;
}
});
return name;
}
2.4.2 编辑ItemCatController
package com.jt.controller;
import com.jt.service.ItemCatService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController //要求返回JSON数据
@RequestMapping("/item/cat")
public class ItemCatController {
@Autowired
private ItemCatService itemCatService;
/*
业务需求:根据商品分类的ID,查询商品分类的名称
url:/item/cat/queryItemName
参数:itemCatId 商品分类ID
返回值:商品分类名称
*/ @RequestMapping("/queryItemName")
public String findItemCatName(Long itemCatId){
return itemCatService.findItemCatName(itemCatId);
}
}
2.4.3 编辑ItemCatServiceImpl
package com.jt.service;
import com.jt.mapper.ItemCatMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class ItemCatServiceImpl implements ItemCatService {
@Autowired
private ItemCatMapper itemCatMapper;
@Override
public String findItemCatName(Long itemCatId) {
return itemCatMapper.selectById(itemCatId).getName();
}
}
2.4.4 页面效果展现
2.4.5 AJAX嵌套问题
说明:如果在ajax内部再次嵌套ajax请求,则需要将内部的ajax请求设置为同步状态
俗语:赶紧走吧,赶不上二路公交车了
核心原因:页面需要刷新2次但是只刷新一次
2.5 关于页面工具栏说明(看懂即可)
1.页面调用
2.定义工具栏
var toolbar = [{
text:'新增',
iconCls:'icon-add',
handler:function(){
//.tree-title 查找页面中class类型为tree-title的元素
//:contains('新增商品') 在所有的class的类型中查找文件元素为"新增商品"的元素
//parent() 选中元素的父级元素
//.click() 执行点击的动作
$(".tree-title:contains('新增商品')").parent().click();
}
},{.....}]
2.5.1 JQuery基本用法
1、选择器 在整个html页面 根据某些特定的标识 准确的定位元素的位置
1、ID选择器 $("#元素的ID")
2、元素(标签)选择器 $("table")
3、类选择器 $(".class的名称") [{},{},{}]
var toolbar = [{
text:'新增',
iconCls:'icon-add',
handler:function(){
//.tree-title 查找页面中class类型为tree-title的元素
//:contains('新增商品') 在所有的class的类型中查找文件元素为"新增商品"的元素
//.parent() 选中元素的父级元素
//.click() 执行点击的动作
$(".tree-title:contains('新增商品')").parent().click();
}
}
3 商品分类目录树形结构展现
3.1 ItemCat表结构设定
问题分析:商品分类信息一般分为3级,问题:如何确定父子级关系的呢?? 答:通过定义父级的字段实现
3.2 3级表数据的分析
说明:通过parent_id 根据父级的ID查询所有的子级信息,当查询一级菜单时parentid=0
/*查询一级分类信息 父级ID=0*/
SELECT * FROM tb_item_cat WHERE parent_id=0;
/*查询二级分类信息 父级ID=0*/
SELECT * FROM tb_item_cat WHERE parent_id=495;
/*查询三级分类信息 父级ID=0*/
SELECT * FROM tb_item_cat WHERE parent_id=529;
3.3 EasyUI中树形结构说明
1.页面JS
$("#tree").tree({
url:"tree.json", //加载远程JSON数据
method:"get", //请求方式 POST
animate:false, //表示显示折叠端口动画效果
checkbox:true, //表述复选框
lines:false, //表示显示连接线
dnd:true, //是否拖拽
onClick:function(node){ //添加点击事件
//控制台
console.info(node);
}
});
2.返回值说明
[
{
"id":"1",
"text":"吃鸡游戏",
"state":"closed"
},
{
"id":"1",
"text":"吃鸡游戏",
"state":"closed"
}
]
3.4 封装树形结构VO对象
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class EasyUITree implements Serializable {
private Long id; //节点ID
private String text; //节点名称
private String state; //节点状态
}
3.5 页面JS结构说明
3.6 异步树加载说明
树控件读取URL。子节点的加载依赖于父节点的状态。当展开一个封闭的节点,如果节点没有加载子节点,它将会把节点id的值作为http请求参数并命名为’id’ ,通过URL发送到服务器上面检索子节点。
3.7 编辑ItemCatController
/*
业务:实现商品分类的查询
url地址:/item/cat/list
参数:查询一级商品分类信息 parentId=0 id默认值应该为0 否则就是用户ID
返回值结果:List
*/@RequestMapping("/list")
public List findItemCatList(Long id){
Long parentId=(id==null)?0:id;
return itemCatService.findItemCatList(parentId);
}
3.8 编辑ItemCatService
@Override
public List findItemCatList(Long parentId) {
//1、准备返回值数据
List treeList=new ArrayList<>();
//思路:返回值的数据 从哪来?VO 转化 POJO数据
//2、实现数据查询
QueryWrapper queryWrapper=new QueryWrapper();//负责拼接where条件
queryWrapper.eq("parent_id",parentId);
List catList=itemCatMapper.selectList(queryWrapper);
//3、实现数据的转化 catList转化为treeList
for (ItemCat itemCat:catList) {
long id=itemCat.getId(); //获取ID值
String text=itemCat.getName(); //获取商品分类名称
//判断:如果是父级 应该closed 如果不是父级 则open
String state=itemCat.getIsParent()?"closed":"open";
EasyUITree easyUITree=new EasyUITree(id,text,state);
treeList.add(easyUITree);
}
return treeList;
}
3.9页面效果展现
你可能感兴趣的:(java)
C++与Java内存共享技术:跨平台与跨语言实现指南
引言在C++和Android项目移植过程中,内存共享是提高性能、减少数据拷贝的关键技术。本文解决了Windows与Android平台处理内存共享问题,采用了会话管理机制保存了同一状态;还解决了C++项目移植在Android项目中依赖过多的问题,采用了Pimpl(PointertoImplementation)设计模式来隐藏实现细节,减少头文件依赖:Windows平台C++进程间的内存共享C++与J
Github 2024-05-07 开源项目日报 Tp10
老孙正经胡说
github 开源 Github趋势分析 开源项目 Python Golang
根据GithubTrendings的统计,今日(2024-05-07统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下:开发语言项目数量TypeScript项目4JupyterNotebook项目2Python项目1Batchfile项目1非开发语言项目1Java项目1HTML项目1C#项目1从零开始构建你喜爱的技术创建周期:2156天Star数量:253338个Fork数量:240
Github 2024-07-07 开源项目日报 Top10
老孙正经胡说
github 开源 Github趋势分析 开源项目 Python Golang
根据GithubTrendings的统计,今日(2024-07-07统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下:开发语言项目数量Python项目4Rust项目2C项目2C++项目1JavaScript项目1HTML项目1JupyterNotebook项目1非开发语言项目1免费编程书籍和学习资源清单创建周期:3762天协议类型:CreativeCommonsAttributio
supervisord:使用RPC管理进程资源实战指南
京脉圈
本文还有配套的精品资源,点击获取简介:supervisord是一个用于管理Unix环境下进程的开源工具,支持进程的启动、停止、重启和异常恢复。本文深入探讨supervisord及其与RPC的结合使用,涉及JAVA、MAVEN和Spring在进程管理中的应用。通过配置文件和XML-RPC接口,实现远程管理进程的便捷性,尤其适用于分布式系统和微服务架构,提高开发者对后台服务的监控和控制效率。1.sup
Arthas从入门到精通
编程界的彭于晏qaq
线上问题排查工具 java
Arthas从入门到精通一、Arthas入门:从安装到第一个命令1.1Arthas简介Arthas(阿尔萨斯)是阿里巴巴开源的Java诊断工具,支持JDK6+,可在不修改代码、不重启服务的情况下,实时监控JVM状态、追踪方法调用、排查性能问题,被誉为“Java线上问题排查的瑞士军刀”。其核心优势在于非侵入式诊断,广泛应用于开发、测试及生产环境,尤其适合解决分布式系统中的疑难问题。1.2安装步骤Ar
服务治理技术深度解析
我是廖志伟
Java场景面试宝典 Service Governance Microservices Architecture Configuration Management
我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、Spri
ShardingSphere 深度解析
我是廖志伟
Java场景面试宝典 ShardingSphere Distributed Database Middleware
我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、Spri
JVM与Spring Boot深度解析
我是廖志伟
Java场景面试宝典 Java JVM Spring Boot
我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、Spri
并发编程与MyBatis核心解析
我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、Spri
JVM与Spring Boot核心解析
Java廖志伟
Java场景面试宝典 Java JVM Performance Optimization
我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、Spri
互联网大厂Java面试指南:从基础到高阶技术栈与业务场景实战
互联网大厂Java面试指南:从基础到高阶技术栈与业务场景实战第一轮:Java基础与Spring生态问题1:请解释Java中的多线程实现方式及其适用场景。解析:核心概念:Java多线程可通过继承Thread类或实现Runnable接口实现,推荐后者以避免单继承限制。ExecutorService是更高级的线程池管理工具。适用场景:高并发任务如电商秒杀、实时数据处理。底层机制:JVM线程模型基于操作系
Web前端工程化
Web前端工程化前端工程化是指将软件工程的方法和原则应用到前端开发中,以提高开发效率、保证代码质量、便于团队协作和项目维护的一套体系化实践。以下是前端工程化的主要内容和实践:核心组成部分1.模块化开发JavaScript模块化:CommonJS、AMD、ESModuleCSS模块化:CSSModules、CSS-in-JS组件化:Vue/React/Angular组件体系微前端:将大型应用拆分为多
基于JAVA+SpringBoot+Vue+Echarts的充电数据大屏可视化分析
✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌文末获取项目下载方式一、项目背景介绍:随着电动汽车的普及,城市中充电设施的需求日益增长。为了提高充电设施的管理效率和用户体验,本文提出了一个停车场充电桩数据可视化平台的设计与实现。该平台旨在集成、处理并展示来自
Android导入compile 'com.roughike:bottom-bar:2.3.1'会导致V7包报错
出现问题Error:Executionfailedfortask':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.>java.lang.RuntimeException:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:
uni-app中,如果您需要在Android和iOS平台上进行基座操作和联调调试
在uni-app中,如果您需要在Android和iOS平台上进行基座操作和联调调试,以下是详细步骤和案例代码:安卓基座操作创建自定义基座:在AndroidStudio中,打开项目的"build.gradle"文件,找到android节点,添加以下代码来配置uni-appAndroid基座。java复制dependencies{implementationproject(':uniapp')//添加
Python破解东方财富反爬机制:热榜数据获取
小白学大数据
python 开发语言
一、了解东方财富热榜数据东方财富热榜数据包括人气榜、飙升榜等多种类型,涵盖了A股市场、ETF基金、港股市场和美股市场等。这些数据通常每5分钟自动更新一次,能够动态展示最新的市场走势。热榜数据可以帮助投资者了解市场的热点和投资者的情绪倾向。二、反爬机制分析东方财富网的反爬机制主要包括以下几种:限制访问频率:频繁的请求可能会被识别为爬虫行为,导致IP被封禁。动态加载内容:部分数据通过JavaScrip
Java领域Spring Cloud Eureka高可用集群搭建
Java大师兄学大数据AI应用开发
java spring cloud eureka ai
Java领域SpringCloudEureka高可用集群搭建关键词:SpringCloud、Eureka、服务注册与发现、高可用集群、微服务架构、服务治理、负载均衡摘要:本文深入探讨了在Java生态中使用SpringCloudEureka构建高可用服务注册中心集群的完整方案。文章从Eureka的核心原理出发,详细讲解了高可用集群的架构设计、配置实现和最佳实践,包括多节点相互注册机制、自我保护模式优
JavaScript高程设计第一章---什么是JavaScript
小顾万家
javascript
文章目录前言一、JavaScript实现二、ECMAScript1.ECMAScript概念2.ECMAScript版本3.ECMAScript符合性三、DOM1.DOM概念2.DOM级别三、BOM1.BOM概念前言通过自身对前端的学习和认知,发现仅仅通过看教学视频来学习前端是不够的,还需要通过阅读相关的前端书籍来扩大自己的知识面。今天我就来总结一下自己通过阅读《JavaScript高级程序设计》
ipmitool java版本_IPMITool使用
梁豆子
ipmitool java版本
内核模块加载ipmi_devintf和ipmi_si后,会生成/dev/ipmi0。ps:获取传感器信息请安装lm-sensors,然后运行sensors-detect。常见ipmitool$ipmitoolbmcresetcold#ResetBMC/DRACtodefault$ipmitool–Iopenbmcinfo#checkBMCinfo$ipmitoolsel#checkSELlog$i
华为OD机试 2025B卷 - 字符串加密 (C++ & Python & JAVA & JS & C语言)
YOLO大师
华为od 华为OD机试2025B卷 华为OD2025B卷 华为OD机考2025B卷
2025B卷目录点击查看:华为OD机试2025B卷真题题库目录|机考题库+算法考点详解2025B卷100分题型题目描述给你一串未加密的字符串str,通过对字符串的每一个字母进行改变来实现加密,加密方式是在每一个字母str[i]偏移特定数组元素a[i]的量,数组a前三位已经赋值:a[0]=1,a[1]=2,a[2]=4。当i>=3时,数组元素a[i]=a[i-1]+a[i-2]+a[i-3]。例如:
数据库面试题06为什么要用MyBatis框架?
MyBatis是一个优秀的持久层框架(虽然常被归类为“半自动化”ORM,但其核心更侧重于SQL映射),它在Java开发中广泛应用,尤其在需要精细控制SQL、处理复杂查询或与遗留数据库交互的场景中备受青睐。选择MyBatis的主要原因可以总结为以下几点:对SQL的完全控制权(核心优势):开发者手写SQL:MyBatis要求开发者直接编写SQL语句(在XML映射文件或注解中)。这与Hibernate/
ArrayList的扩容机制(源码解析)
Exclusive_Cat
ArrayList java 开发语言
我们会从ArrayList的源码进行讲起,一点点的解析各种细节,首先我们要在idea中创建一个ArrayList的集合,调用它的add方法,然后摁住CTRL键,鼠标点击add方法查看其中的源码部分。packagecollection;importjava.util.ArrayList;publicclassArrayListTest{publicstaticvoidmain(String[]arg
android webview confilm,Android-WebView(四) 实现一个安全的webView
王诗沐
android webview confilm
正如文章Androidwebview(三)addJavascriptInterface的安全问题中所展示的那样,Androidapi17(Android4.2)版本之前,通过WebView.addJavascriptInterface()方法添加的JavaBridge存在安全性风险,那么该怎么避免呢?js向java通信的渠道--prompt我们知道js中常用的方法:alert,console.lo
随机生成优惠码并保存至Mysql数据库
iamwiam
java jdbc连接mysql Java jdbc连接mysql
目前很多商家通过优惠码做活动,现在我们简单的实现八位的优惠码,并保存在数据库中。1.随机生成优惠码代码如下:importjava.util.Random;/***功能:随机生成优惠码*@authoriamwiam**/publicclassActivatedcode{publicintACTIVATEDCODENUM=200;//生成的优惠码数量Randomrandom=newRandom();S
ace.js在线代码编辑器实战
明月566
js 在线代码编辑器 js代码编辑器 语法检测 ace.js ace.js在线代码编辑器
背景ACE简介:功能实现1、引入js2、添加控件3、初始化组件4、保存时代码语法检测5、效果图及完整示例代码:6、官网在线测试:7、遇到的一些问题:背景项目需要,在一些场景,用户需要手动编写一些js脚本来实现自己的功能;前期一直用文本框显示,不便于编辑和查看。因此需要引入一个在线代码编辑器。效果如下:ACE简介:ACE是一个开源的、独立的、基于浏览器的代码编辑器,可以嵌入到任何web页面或Java
WebView 安全之 addJavascriptInterface
WebView安全之addJavascriptInterface不会写代码的IT男关注2016.01.0318:14*字数474阅读5668评论0喜欢30x00addJavascriptInterface介绍WebView是Android平台下的一个重要组件,通常用来在Activity中嵌入一个简单的浏览器,实现在线网页浏览的功能。比如下面代码实现访问Google页面:WebViewwebView
华为OD机考2025B卷 - 最多几个直角三角形(Java & Python& JS & C++ & C )
算法大师
最新华为OD机试真题 华为OD机试真题 (Java/JS/Py/C) java python 华为OD机考2025B卷 javascript 华为od C++ C语言
最新华为OD机试真题目录:点击查看目录华为OD面试真题精选:点击立即查看题目描述有N条线段,长度分别为a[1]-a[n]。现要求你计算这N条线段最多可以组合成几个直角三角形。每条线段只能使用一次,每个三角形包含三条线段。输入描述第一行输入一个正整数T(1#
解锁迭代器模式:代码遍历的优雅之道
目录一、迭代器模式是什么?二、迭代器模式的结构剖析2.1抽象迭代器(Iterator)2.2具体迭代器(ConcreteIterator)2.3聚合接口(Aggregate)2.4具体聚合类(ConcreteAggregate)三、迭代器模式的优势展现3.1简化聚合类设计3.2提供统一遍历接口3.3支持多样遍历方式四、迭代器模式的应用场景4.1Java集合框架4.2GUI菜单系统4.3数据库查询结
乾坤微前端框架详细使用大全
不知名靓仔
前端框架
引言乾坤微前端框架(Qiankun)是一款轻量级的微前端解决方案,它基于JavaScript的Proxy特性和WebComponents技术,提供了一套简单易用的微前端实现方案。本文将详细介绍乾坤微前端框架的安装、配置、使用方法及常见问题解答,帮助开发者快速上手乾坤微前端框架。1.乾坤简介1.1什么是乾坤?乾坤是一个轻量级的微前端框架,旨在帮助开发者轻松实现微前端架构。它通过主应用(MainApp
牛客_计算器(二)
d3y1
java 开发语言
计算器(二)https://www.nowcoder.com/practice/a9c170bfaf7349e3acb475d786ab1c7dimportjava.util.*;/***NC241计算器(二)*@authord3y1*/publicclassSolution{/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可***@paramsstring字符串*@
iOS http封装
374016526
ios 服务器交互 http 网络请求
程序开发避免不了与服务器的交互,这里打包了一个自己写的http交互库。希望可以帮到大家。
内置一个basehttp,当我们创建自己的service可以继承实现。
KuroAppBaseHttp *baseHttp = [[KuroAppBaseHttp alloc] init];
[baseHttp setDelegate:self];
[baseHttp
lolcat :一个在 Linux 终端中输出彩虹特效的命令行工具
brotherlamp
linux linux教程 linux视频 linux自学 linux资料
那些相信 Linux 命令行是单调无聊且没有任何乐趣的人们,你们错了,这里有一些有关 Linux 的文章,它们展示着 Linux 是如何的有趣和“淘气” 。
在本文中,我将讨论一个名为“lolcat”的小工具 – 它可以在终端中生成彩虹般的颜色。
何为 lolcat ?
Lolcat 是一个针对 Linux,BSD 和 OSX 平台的工具,它类似于 cat 命令,并为 cat
MongoDB索引管理(1)——[九]
eksliang
mongodb MongoDB管理索引
转载请出自出处:http://eksliang.iteye.com/blog/2178427 一、概述
数据库的索引与书籍的索引类似,有了索引就不需要翻转整本书。数据库的索引跟这个原理一样,首先在索引中找,在索引中找到条目以后,就可以直接跳转到目标文档的位置,从而使查询速度提高几个数据量级。
不使用索引的查询称
Informatica参数及变量
18289753290
Informatica 参数 变量
下面是本人通俗的理解,如有不对之处,希望指正 info参数的设置:在info中用到的参数都在server的专门的配置文件中(最好以parma)结尾 下面的GLOBAl就是全局的,$开头的是系统级变量,$$开头的变量是自定义变量。如果是在session中或者mapping中用到的变量就是局部变量,那就把global换成对应的session或者mapping名字。
[GLOBAL] $Par
python 解析unicode字符串为utf8编码字符串
酷的飞上天空
unicode
php返回的json字符串如果包含中文,则会被转换成\uxx格式的unicode编码字符串返回。
在浏览器中能正常识别这种编码,但是后台程序却不能识别,直接输出显示的是\uxx的字符,并未进行转码。
转换方式如下
>>> import json
>>> q = '{"text":"\u4
Hibernate的总结
永夜-极光
Hibernate
1.hibernate的作用,简化对数据库的编码,使开发人员不必再与复杂的sql语句打交道
做项目大部分都需要用JAVA来链接数据库,比如你要做一个会员注册的 页面,那么 获取到用户填写的 基本信后,你要把这些基本信息存入数据库对应的表中,不用hibernate还有mybatis之类的框架,都不用的话就得用JDBC,也就是JAVA自己的,用这个东西你要写很多的代码,比如保存注册信
SyntaxError: Non-UTF-8 code starting with '\xc4'
随便小屋
python
刚开始看一下Python语言,传说听强大的,但我感觉还是没Java强吧!
写Hello World的时候就遇到一个问题,在Eclipse中写的,代码如下
'''
Created on 2014年10月27日
@author: Logic
'''
print("Hello World!");
运行结果
SyntaxError: Non-UTF-8
学会敬酒礼仪 不做酒席菜鸟
aijuans
菜鸟
俗话说,酒是越喝越厚,但在酒桌上也有很多学问讲究,以下总结了一些酒桌上的你不得不注意的小细节。
细节一:领导相互喝完才轮到自己敬酒。敬酒一定要站起来,双手举杯。
细节二:可以多人敬一人,决不可一人敬多人,除非你是领导。
细节三:自己敬别人,如果不碰杯,自己喝多少可视乎情况而定,比如对方酒量,对方喝酒态度,切不可比对方喝得少,要知道是自己敬人。
细节四:自己敬别人,如果碰杯,一
《创新者的基因》读书笔记
aoyouzi
读书笔记 《创新者的基因》
创新者的基因
创新者的“基因”,即最具创意的企业家具备的五种“发现技能”:联想,观察,实验,发问,建立人脉。
第一部分破坏性创新,从你开始
第一章破坏性创新者的基因
如何获得启示:
发现以下的因素起到了催化剂的作用:(1) -个挑战现状的问题;(2)对某项技术、某个公司或顾客的观察;(3) -次尝试新鲜事物的经验或实验;(4)与某人进行了一次交谈,为他点醒
表单验证技术
百合不是茶
JavaScript DOM对象 String对象 事件
js最主要的功能就是验证表单,下面是我对表单验证的一些理解,贴出来与大家交流交流 ,数显我们要知道表单验证需要的技术点, String对象,事件,函数
一:String对象;通常是对字符串的操作;
1,String的属性;
字符串.length;表示该字符串的长度;
var str= "java"
web.xml配置详解之context-param
bijian1013
java servlet web.xml context-param
一.格式定义:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>contextConfigLocationValue></param-value>
</context-param>
作用:该元
Web系统常见编码漏洞(开发工程师知晓)
Bill_chen
sql PHP Web fckeditor 脚本
1.头号大敌:SQL Injection
原因:程序中对用户输入检查不严格,用户可以提交一段数据库查询代码,根据程序返回的结果,
获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
本质:
对于输入检查不充分,导致SQL语句将用户提交的非法数据当作语句的一部分来执行。
示例:
String query = "SELECT id FROM users
【MongoDB学习笔记六】MongoDB修改器
bit1129
mongodb
本文首先介绍下MongoDB的基本的增删改查操作,然后,详细介绍MongoDB提供的修改器,以完成各种各样的文档更新操作 MongoDB的主要操作
show dbs 显示当前用户能看到哪些数据库
use foobar 将数据库切换到foobar
show collections 显示当前数据库有哪些集合
db.people.update,update不带参数,可
提高职业素养,做好人生规划
白糖_
人生
培训讲师是成都著名的企业培训讲师,他在讲课中提出的一些观点很新颖,在此我收录了一些分享一下。注:讲师的观点不代表本人的观点,这些东西大家自己揣摩。
1、什么是职业规划:职业规划并不完全代表你到什么阶段要当什么官要拿多少钱,这些都只是梦想。职业规划是清楚的认识自己现在缺什么,这个阶段该学习什么,下个阶段缺什么,又应该怎么去规划学习,这样才算是规划。
国外的网站你都到哪边看?
bozch
技术 网站 国外
学习软件开发技术,如果没有什么英文基础,最好还是看国内的一些技术网站,例如:开源OSchina,csdn,iteye,51cto等等。
个人感觉如果英语基础能力不错的话,可以浏览国外的网站来进行软件技术基础的学习,例如java开发中常用的到的网站有apache.org 里面有apache的很多Projects,springframework.org是spring相关的项目网站,还有几个感觉不错的
编程之美-光影切割问题
bylijinnan
编程之美
package a;
public class DisorderCount {
/**《编程之美》“光影切割问题”
* 主要是两个问题:
* 1.数学公式(设定没有三条以上的直线交于同一点):
* 两条直线最多一个交点,将平面分成了4个区域;
* 三条直线最多三个交点,将平面分成了7个区域;
* 可以推出:N条直线 M个交点,区域数为N+M+1。
关于Web跨站执行脚本概念
chenbowen00
Web 安全 跨站执行脚本
跨站脚本攻击(XSS)是web应用程序中最危险和最常见的安全漏洞之一。安全研究人员发现这个漏洞在最受欢迎的网站,包括谷歌、Facebook、亚马逊、PayPal,和许多其他网站。如果你看看bug赏金计划,大多数报告的问题属于 XSS。为了防止跨站脚本攻击,浏览器也有自己的过滤器,但安全研究人员总是想方设法绕过这些过滤器。这个漏洞是通常用于执行cookie窃取、恶意软件传播,会话劫持,恶意重定向。在
[开源项目与投资]投资开源项目之前需要统计该项目已有的用户数
comsci
开源项目
现在国内和国外,特别是美国那边,突然出现很多开源项目,但是这些项目的用户有多少,有多少忠诚的粉丝,对于投资者来讲,完全是一个未知数,那么要投资开源项目,我们投资者必须准确无误的知道该项目的全部情况,包括项目发起人的情况,项目的维持时间..项目的技术水平,项目的参与者的势力,项目投入产出的效益.....
oracle alert log file(告警日志文件)
daizj
oracle 告警日志文件 alert log file
The alert log is a chronological log of messages and errors, and includes the following items:
All internal errors (ORA-00600), block corruption errors (ORA-01578), and deadlock errors (ORA-00060)
关于 CAS SSO 文章声明
denger
SSO
由于几年前写了几篇 CAS 系列的文章,之后陆续有人参照文章去实现,可都遇到了各种问题,同时经常或多或少的收到不少人的求助。现在这时特此说明几点:
1. 那些文章发表于好几年前了,CAS 已经更新几个很多版本了,由于近年已经没有做该领域方面的事情,所有文章也没有持续更新。
2. 文章只是提供思路,尽管 CAS 版本已经发生变化,但原理和流程仍然一致。最重要的是明白原理,然后
初二上学期难记单词
dcj3sjt126com
english word
lesson 课
traffic 交通
matter 要紧;事物
happy 快乐的,幸福的
second 第二的
idea 主意;想法;意见
mean 意味着
important 重要的,重大的
never 从来,决不
afraid 害怕 的
fifth 第五的
hometown 故乡,家乡
discuss 讨论;议论
east 东方的
agree 同意;赞成
bo
uicollectionview 纯代码布局, 添加头部视图
dcj3sjt126com
Collection
#import <UIKit/UIKit.h>
@interface myHeadView : UICollectionReusableView
{
UILabel *TitleLable;
}
-(void)setTextTitle;
@end
#import "myHeadView.h"
@implementation m
N 位随机数字串的 JAVA 生成实现
FX夜归人
java Math 随机数 Random
/**
* 功能描述 随机数工具类<br />
* @author FengXueYeGuiRen
* 创建时间 2014-7-25<br />
*/
public class RandomUtil {
// 随机数生成器
private static java.util.Random random = new java.util.R
Ehcache(09)——缓存Web页面
234390216
ehcache 页面缓存
页面缓存
目录
1 SimplePageCachingFilter
1.1 calculateKey
1.2 可配置的初始化参数
1.2.1 cach
spring中少用的注解@primary解析
jackyrong
primary
这次看下spring中少见的注解@primary注解,例子
@Component
public class MetalSinger implements Singer{
@Override
public String sing(String lyrics) {
return "I am singing with DIO voice
Java几款性能分析工具的对比
lbwahoo
java
Java几款性能分析工具的对比
摘自:http://my.oschina.net/liux/blog/51800
在给客户的应用程序维护的过程中,我注意到在高负载下的一些性能问题。理论上,增加对应用程序的负载会使性能等比率的下降。然而,我认为性能下降的比率远远高于负载的增加。我也发现,性能可以通过改变应用程序的逻辑来提升,甚至达到极限。为了更详细的了解这一点,我们需要做一些性能
JVM参数配置大全
nickys
jvm 应用服务器
JVM参数配置大全
/usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=300M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5 -
搭建 CentOS 6 服务器(14) - squid、Varnish
rensanning
varnish
(一)squid
安装
# yum install httpd-tools -y
# htpasswd -c -b /etc/squid/passwords squiduser 123456
# yum install squid -y
设置
# cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
# vi /etc/
Spring缓存注解@Cache使用
tom_seed
spring
参考资料
http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/
http://swiftlet.net/archives/774
缓存注解有以下三个:
@Cacheable @CacheEvict @CachePut
dom4j解析XML时出现"java.lang.noclassdeffounderror: org/jaxen/jaxenexception"错误
xp9802
java.lang.NoClassDefFoundError: org/jaxen/JaxenExc
关键字: java.lang.noclassdeffounderror: org/jaxen/jaxenexception
使用dom4j解析XML时,要快速获取某个节点的数据,使用XPath是个不错的方法,dom4j的快速手册里也建议使用这种方式
执行时却抛出以下异常:
Exceptio